当今几乎所有的实用的编译器/解释器(以下统称编译器)都是用 C 语言编写的,有一些语言比如 Clojure,Jython 等是基于 JVM 或者说是用 Java 实现的,IronPython 等是基于 .NET 实现的,但是 Java 和 C# 等本身也要依靠 C/C++ 来实现,等于是间接调用了 C。所以衡量某种高级语言的可移植性其实就是在讨论 ANSI/ISO C 的移植性。
C 语言是很低级的语言,很多方面都近似于汇编语言,在《Intel 32 位汇编语言程序设计》一书中,甚至介绍了手工把简单的 C 语言翻译成汇编的方法。对于编译器这种系统软件,用 C 语言来编写是很自然不过的,即使是像 Python 这样的高级语言依然在底层依赖于 C 语言。现在的学生,学过编译原理后,只要有点编程能力的都可以实现一个功能简单的类 C 语言编译器。
可是问题来了,不知道你有没有想过,大家都用 C 语言或基于 C 语言的语言来写编译器,那么世界上第一个 C 语言编译器又是怎么编写的呢?这不是一个“鸡和蛋”的问题……
C/C++的学习裙【七一二 二八四 七零五 】,无论你是小白还是进阶者,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
还是让我们回顾一下 C 语言历史:1970 年 Tomphson 和 Ritchie 在 BCPL(一种解释型语言)的基础上开发了 B 语言,1973 年又在 B 语言的基础上成功开发出了现在的