打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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实现了自举。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
编程语言发展
学编程选择高级语言或是低级语言?
30分钟python速成
为什么Java、Python会成为程序员最害怕的编程语言?
C语言编译器自举开发过程
涨知识丨中文编程语言有哪些?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服