欢迎光临散文网 会员登陆 & 注册

震惊!你知道编程语言之祖 C 语 言,自身是用什么语言写的吗?

2022-04-02 19:54 作者:甬上逍遥子  | 我要投稿

C语言在运行之前得编译才行,C语言额编译器从哪里来?

机器语言可以直接被CPU执行,不需要编译器。

汇编语言只是机器语言的助记符,但它依旧需要编译成机器语言才能执行。

所以只能用机器语言来写第一个编译器,以后就不用了。

用汇编语言去写C语言的编译器,然后可以编译任意的C语言程序了。然后用C语言本身写一个编译器,接下来就可以把用汇编写的C语言编译器抛弃了。

如果C语言之前已经出些了别的高级语言,比如pascal,然后就可以用pascal来写一个C语言额编译器了。

第一个Pascal的编译器据说使用fortan写的。第一个高级语言的Fortan的编译器应该是汇编语言写的。

在开发第一代unix的时候,连C语言都没有KenThompson和DennisRitchie可是用汇编一行行把Unix敲出来的。

WPS第一版是求伯君用汇编写出来的。

Turbo Pascal的编译器也是Anders用汇编写出来的、

对于编译器,还可用“滚雪球”的方式来开发:

以C语言为例,第一个版本可以先选择C语言的一个子集,例如只支持基本的数据类型,流程控制语,句函数调用.......我们把这个子集称为C0,然后用汇编语言写个编译器。只搞定这个语言的子集C0,这样写起来就容易不少了。C0这个子集可以工作了,然后我们扩展这个子集,例如添加struct指针......把新的语言称为C1,那C1这个语言的编译器由谁来写呢?自然是C0,等到C1可以工作了,再次扩展语言特性,用C1写编译器,得到C2,然后是C3,C4.......最后得到完整的C语言,这个过程被称为bootstraping,中文叫做自举。





















震惊!你知道编程语言之祖 C 语 言,自身是用什么语言写的吗?的评论 (共 条)

分享到微博请遵守国家法律