ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

最早的C语言编译器,先是B语言以及‌PDP-11汇编语言编写,后来通过自举,也就是简单的C语言子集作为编译器逐步通过其有限子集实现自我构建C语言编译自身C语言

最早的C语言编译器,先是B语言以及‌PDP-11汇编语言编写,后来通过自举,也就是简单的C语言子集作为编译器逐步通过其有限子集实现自我构建C语言编译自身C语言

关于最早的C语言编译器,其诞生与C语言本身的发展紧密相关,并经历了一个从低级语言到“自举”的关键过程。

  1. ‌最初的实现语言‌:世界上第一个C语言编译器并非用C语言本身编写,而是由C语言的前身——‌B语言‌,以及‌PDP-11汇编语言‌共同实现的。在1973年左右,丹尼斯·里奇(Dennis Ritchie)和肯·汤普逊(Ken Thompson)在贝尔实验室开发Unix操作系统时,为了重写系统内核,需要一种更高效的工具。他们基于B语言(由Ken Thompson开发)并结合PDP-11的汇编语言,编写了第一个C语言编译器的原型。‌12

  2. ‌“自举”(Bootstrapping)的关键突破‌:为了摆脱对汇编语言的依赖,开发者们采用了一种称为“自举”的递推方法。具体步骤如下:

    • ‌步骤一‌:先用汇编语言实现一个仅包含C语言最核心功能的‌极小子集(称为C0)‌的编译器。
    • ‌步骤二‌:使用这个C0编译器,来编译一个用C语言(C0的扩展,称为C1)编写的、功能更强大的新编译器。
    • ‌步骤三‌:重复此过程,逐步增加语言功能(C2, C3...),最终用C语言自身编写出一个功能完整的C编译器。
    • 这一过程证明了高级语言可以通过其有限子集实现自我构建,是计算机科学史上的一个重要里程碑。‌12
  3. ‌早期的编译器实例‌:在GCC等现代编译器出现之前,还有其他早期的C编译器。例如,‌可移植C编译器(pcc)‌ 由史蒂芬·强生在1970年代中期于贝尔实验室开发,因其设计上与机器相关的代码比例较低而具有良好的可移植性,并曾作为BSD Unix的默认编译器。‌4 此外,‌Whitesmiths C编译器‌是20世纪70年代末出现的最早的商业C编译器之一。‌5

综上所述,最早的C语言编译器是1973年左右用‌B语言和PDP-11汇编语言‌编写的,随后通过“自举”技术,迅速被用C语言自身编写的编译器所取代。‌1

https://baike.baidu.com/item/C%2FC%2B%2B%E7%BC%96%E8%AF%91%E5%99%A8/16142634

https://zhuanlan.zhihu.com/p/693132914

返回列表