還真有人對(duì)這個(gè)問(wèn)題孜孜不倦:-)
既然我能設(shè)計(jì)編譯器,那我設(shè)計(jì)編譯器總不能直接用機(jī)器語(yǔ)言寫(xiě)吧,那我寫(xiě)編譯器的源代碼的編譯器在哪里呢?(怎么這么繞)
我是在下面的一個(gè)討論對(duì)這個(gè)問(wèn)題感興趣的
http://stackoverflow.com/questions/18125490/how-was-the-first-c-compiler-written
里面對(duì) 大牛Dennis Ritchie寫(xiě)c語(yǔ)言編譯器的歷史進(jìn)行了相關(guān)闡述,大概就是他原來(lái)對(duì)B語(yǔ)言不滿意,所以不停改進(jìn)B語(yǔ)言,這個(gè)過(guò)程是不停迭代的,就是不停用舊一點(diǎn)的語(yǔ)言“自舉”新的編譯器。有一天誕生了NB語(yǔ)言,大家就把從這個(gè)時(shí)間點(diǎn)開(kāi)始說(shuō)他創(chuàng)造了c語(yǔ)言。他自己都不知道哪天算c語(yǔ)言誕生了:O
這只是C語(yǔ)言的歷史.其他語(yǔ)言比如Pascal語(yǔ)言其實(shí)是用 Fortran語(yǔ)言寫(xiě)的編譯器。
關(guān)于自舉“Bootstrapping”,你可以在以下Wiki查到相關(guān)話題。
https://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29