欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

C語言是用什么編出的

錢艷冰2年前15瀏覽0評論

C語言是用什么編出的?

首先答案是c語言是用c語言編寫。

語言自舉性

一個語言能否自己編寫自己實現(xiàn)自己編譯,這叫自編譯,自舉性。目前能實現(xiàn)自舉性的語言沒有幾個,而自舉性也就成了一個語言能否真實強大的標(biāo)志。

一般來說圖靈完備的語言,編譯型語言,虛擬機語言可以實現(xiàn)自舉。而解釋型語言基本上很難。

現(xiàn)代很多語言都沒實現(xiàn)自舉,Java(jvm),Javascript, python,ruby,lua,php,perl……一堆。這些語言編譯器、解釋器都是c語言。

一個語言能自舉是他們社區(qū)和開發(fā)一直夢寐以求的事情,也是他們情懷和追求所在。有一個語言為了實現(xiàn)自舉成功,花了近20年,前年圣誕節(jié)才正式推出了第一個正式版本。它就是perl6,perl的下一代語言。perl6支持過程、OO、函數(shù)式三種程模式,支持虛擬機的語言(自己的虛擬機和jvm)。為了做好perl6,社區(qū)搞了一個功能啟示錄,把要實現(xiàn)的功能好點子都錄進去。后來一個日本人參考這個啟示錄自己實現(xiàn)了一個語言,這就有了ruby語言,但是ruby沒有自舉。

c語言的自舉過程和交叉編譯

我在以前的回答中,曾說過c語言的來歷:

上世紀(jì)70年代,為了實現(xiàn)unix,教主Tomphson和Ritchie開發(fā)了B語言,但是b語言性能不行,編寫也較繁瑣,所以又在B語言的基礎(chǔ)上開發(fā)出了現(xiàn)在的C語言。

第一個C語言編譯器的原型是用B語言或者混合B和匯編語言編寫的。采用部分實現(xiàn)功能,交叉編譯方式實現(xiàn)。

先用B和匯編語言編寫一個C語言的部分必須功能的編譯器,再通過這個編譯器,完成完整的C語言編譯器。詳細(xì)過程如下:

1、先編寫一個只有C語言最基本功能編譯器C0語言,用匯編語言編寫出C0的編譯器。

2、接著用C0實現(xiàn)比C0復(fù)雜,功能不完整的C語言子集C1語言,用C0編譯出C1語言的編譯器。

3、在C1-〉c2……如此循環(huán)直到Cn,Cn功能已經(jīng)強大到可以實現(xiàn)C。

4、用Cn編譯實現(xiàn)了第一個c語言編輯器,即C實現(xiàn)了自舉。