C语⾔是由什么语⾔编写⽽成的?
⾸先答案是c语⾔是⽤c语⾔编写。
语⾔⾃举性
⼀个语⾔能否⾃⼰编写⾃⼰实现⾃⼰编译,这叫⾃编译,⾃举性。⽬前能实现⾃举性的语⾔没有⼏个,⽽⾃举性也就成了⼀个语⾔能否真实强⼤的标志。
c语言下载什么⼀般来说图灵完备的语⾔,编译型语⾔,虚拟机语⾔可以实现⾃举。⽽解释型语⾔基本上很难。
现代很多语⾔都没实现⾃举,Java(jvm),Javascript, python,ruby,lua,php,perl……⼀堆。这些语⾔编译器、解释器都是c语⾔。
⼀个语⾔能⾃举是他们社区和开发⼀直梦寐以求的事情,也是他们情怀和追求所在。有⼀个语⾔为了实现⾃举成功,花了近20年,前年圣诞节才正式推出了第⼀个正式版本。它就是
perl6,perl的下⼀代语⾔。perl6⽀持过程、OO、函数式三种程模式,⽀持虚拟机的语⾔(⾃⼰的虚拟机和jvm)。为了做好perl6,社区搞了⼀个功能启⽰录,把要实现的功能好点⼦都录进去。后来⼀个⽇本⼈参考这个启⽰录⾃⼰实现了⼀个语⾔,这就有了ruby语⾔,但是ruby没有⾃举。
c语⾔的⾃举过程和交叉编译
我在以前的回答中,曾说过c语⾔的来历:
上世纪70年代,为了实现unix,教主Tomphson和Ritchie开发了B语⾔,但是b语⾔性能不⾏,编写也较繁琐,所以⼜在B语⾔的基础上开发出了现在的C语⾔。
第⼀个C语⾔编译器的原型是⽤B语⾔或者混合B和汇编语⾔编写的。采⽤部分实现功能,交叉编译⽅式实现。
先⽤B和汇编语⾔编写⼀个C语⾔的部分必须功能的编译器,再通过这个编译器,完成完整的C 语⾔编译器。详细过程如下:
1、先编写⼀个只有C语⾔最基本功能编译器C0语⾔,⽤汇编语⾔编写出C0的编译器。
2、接着⽤C0实现⽐C0复杂,功能不完整的C语⾔⼦集C1语⾔,⽤C0编译出C1语⾔的编译器。
3、在C1-〉c2……如此循环直到Cn,Cn功能已经强⼤到可以实现C。
4、⽤Cn编译实现了第⼀个c语⾔编辑器,即C实现了⾃举。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论