还真有人对这个问题孜孜不倦:-)
既然我能设计编译器,那我设计编译器总不能直接用机器语言写吧,那我写编译器的源代码的编译器在哪里呢?(怎么这么绕)
我是在下面的一个讨论对这个问题感兴趣的
http://stackoverflow.com/questions/18125490/how-was-the-first-c-compiler-written
里面对 大牛Dennis Ritchie写c语言编译器的历史进行了相关阐述,大概就是他原来对B语言不满意,所以不停改进B语言,这个过程是不停迭代的,就是不停用旧一点的语言“自举”新的编译器。有一天诞生了NB语言,大家就把从这个时间点开始说他创造了c语言。他自己都不知道哪天算c语言诞生了:O
这只是C语言的历史.其他语言比如Pascal语言其实是用 Fortran语言写的编译器。
关于自举“Bootstrapping”,你可以在以下Wiki查到相关话题。
https://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29