这个问题可能源于我对编译器的误解,但是让我们来看看…K&R第一版前言中可以找到以下陈述(page xi):
“操作系统、C编译器和基本上所有的UNIX应用程序(包括用于准备本书的所有软件)都是使用C语言编写的。”
(我强调)
这里是我不理解的地方:难道那个C编译器在它能够编译任何C代码之前不必首先被编译吗?如果那个C编译器是用C编写的,那么编译它是否需要一个已经存在的C编译器呢?
摆脱这个无限回归的困境(或者鸡和蛋问题)的唯一方法是,K&R所提到的用C编写的C编译器实际上是使用了一种其他语言编写的已经存在的C编译器进行编译的。用C编写的C编译器接管了以前的C编译器。
还是我完全错了?
“操作系统、C编译器和基本上所有的UNIX应用程序(包括用于准备本书的所有软件)都是使用C语言编写的。”
(我强调)
这里是我不理解的地方:难道那个C编译器在它能够编译任何C代码之前不必首先被编译吗?如果那个C编译器是用C编写的,那么编译它是否需要一个已经存在的C编译器呢?
摆脱这个无限回归的困境(或者鸡和蛋问题)的唯一方法是,K&R所提到的用C编写的C编译器实际上是使用了一种其他语言编写的已经存在的C编译器进行编译的。用C编写的C编译器接管了以前的C编译器。
还是我完全错了?