首页 > 代码库 > C语言之“先有的鸡还是先有的蛋”浅谈

C语言之“先有的鸡还是先有的蛋”浅谈

之前在一个十分著名的网站上看到:“Visual Studio 2010的界面是使用用WPF开发的”;后来又看到“C语言的编译器通常是用C语言或是C++语言开发”,好迷惑啊,怎么感觉好像有有自己生自己,鸡生蛋、蛋生鸡,鸡鸡蛋蛋无穷无尽的意思啊。


WPF本身就是Visual Studio 中提供的一种开发项目模板,怎么Visual Studio 的界面是用它开发的?是现有的Visual Studio 还是先有的WPF?

C语言编译器就是用来编译C语言的,如果C语言编译器也是C开发的,那么是先有C还是先有C编译器?没有C哪来的C编译器?没有C编译器又怎么去编译C?好绕人啊!

仔细想了想,理了理思路,总算是想到了一个能让自己满意的解答。其实”C语言编译器是用C语言开发“这句话的正确理解应该是这样的一个过程:

1. 首先使用汇编语言编写出一个C语言编译器 I.exe(也就是早起的C编译器);

2. 有了 I.exe 之后,就可以用 I.exe 来编写C代码,得到一个程序 II.exe 

3. II.exe的功能就可以是读取文本(即C语言源代码),根据文本的生成相应的汇编代码。

4. 这里的 II.exe 其实就是”用C语言开发的C语言编译器“


其实鸡也一样,首先是没有鸡的,后来因为两个不知名的物种,杂交生下了鸡,就像驴和马生成了骡一样,区别就是骡是不可生育的,鸡是可以下蛋的,于是,鸡就开始下蛋,蛋就开始孵化成鸡,于是就有了现在这么多鸡和鸡蛋。

C语言之“先有的鸡还是先有的蛋”浅谈