首頁>技術>

  在編譯型語言中,軟體是由編譯器編譯而來的,編譯器本身也是軟體,那編譯器又是怎麼來的呢?咋一看這個問題,感覺又要掉入“雞生蛋,蛋生雞”這樣無止盡的迴圈中了。下面以C語言編譯器為例,介紹下C編譯器是什麼來的。

C語言之父

  C語言並不是第一門程式語言,在它之前,已經有其他程式語言存在了,例如B語言、Fortran,彙編等。C語言的設計參考了B語言,歷史上第一個C編譯器是使用B語言編寫的,甚至有可能是由B+彙編混合編寫。在這裡我們需要明確一點,C語言的發展並不是一蹴而就的,而是經歷了多年的完善和修改才被推出(C語言誕生於1969 - 1973年間,由貝爾實驗室的湯普遜(Ken Thompson)和裡奇(Dennis Ritchie)二人共同發明,正式成型是在1973年。)。同樣,C編譯器也是經過逐次迭代更新才最終形成具備完整功能的C編譯器。

  C語言具有自舉特性,自舉的意思是該語言的編譯器可以編譯出編譯該語言的編譯器。

是不是有點繞?話說我自己都差點沒讀懂自己寫的話。說簡單一點就是該語言不需要藉助其他語言就可以編譯出給自己用的編譯器。但是,第一個編譯器必須是透過其他語言編譯出來的(先有雞),有了第一版編譯器之後,才能實現編譯器的自我迭代。在用B語言編譯出第一個C編譯器後,利用C語言的自舉特性,就可以像滾雪球一樣,由最初的一個只具備基本功能的C編譯器不斷迭代,開發出支援更多特性的C編譯器,並最終形成我們現在使用的版本。如果你有興趣,可以在網際網路上下載到最新的gnu C工具鏈原始碼並自行編譯出gcc編譯器。除了第一版C編譯器以外,C編譯器的原始碼早已經脫離了B語言,使用C語言本身編寫了。

gcc原始碼下載地址

  知道了C編譯是怎麼來的,如果你還好奇B語言編譯器是怎麼來的,那就是用匯編寫出來的。彙編器怎麼來的,是用機器語言寫出來的。套用道家的說法:機器生彙編,彙編生B,B生C,C生萬物。

7
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Python合集之Python集合(二)