(最早編寫的語言就是在紙帶上打孔的編譯器實現(xiàn)原理是語法樹和自動機)
計算機語言有一個分支學(xué)科叫《編譯原理》,作為一名很老的程序員,嘗試幫大家梳理一下。第一次學(xué)習(xí)編譯原理已經(jīng)是14年前的事了。如果大家想真正學(xué)好編程,《編譯原理》是最重要的基礎(chǔ)學(xué)科。
說到計算機的語言體系就不得不從計算機的硬件底層說起,所有編程語言的本質(zhì)其實都在是操作硬件。以下這些的層次關(guān)系。
計算語言的本質(zhì)就是在操作計算機硬件,重要的事情說三遍哦??。
一、計算機有兩個很重要的概念,運算器和存儲器。沒錯,運算器就是中央處理器(CPU),存儲器就包括內(nèi)存和硬盤,但內(nèi)存只不過是緩存,預(yù)先讀取和預(yù)先寫入的操作,緩解硬盤的壓力。至于其他計算機硬件,如主板、包括主板上的南橋北橋芯片,顯示卡,音頻卡,USB處理器等等可以全部忽略。
二、硬盤的存儲結(jié)構(gòu)屬于物理存儲,也就是只能存儲正負點電兩種狀態(tài)。這就決定了計算機的原始編程語言就是0和1。最早的編程員叫Ada,是位女性,她最早編寫的語言就是在紙帶上打孔,101010001101011,差不多這個意思,
三、這種0和1組成的程序我們叫機器代碼,為了愉快編程,很快又有大神發(fā)明了匯編語言。其實就是發(fā)明了匯編語言的編譯器(翻譯器)把匯編語言轉(zhuǎn)換成了機器代碼。
四、最重要的語言出場了,C語言,目前C語言是最重要的語言,大家看出來了,它處在計算語言的中間、承上啟下。瀏覽器是C語言編寫的,瀏覽器中的javascript html css就是運行在瀏覽器的內(nèi)核引擎中的,它被動態(tài)解釋并執(zhí)行;操作系統(tǒng)windows和mac也是C語言編寫的,安卓基于java,java運行在虛擬機上,java虛擬機就是C語言編寫的。蘋果ios直接就是object-c(C語言的一個變種)編寫的;就連PHP語言的編譯器也是C語言編寫的,PHP語言被編譯成C語言,再被編譯成匯編代碼,再被編譯成機器代碼。
以上就是計算機語言的生態(tài)關(guān)系,但計算機語言自身的編譯器實現(xiàn)原理是什么呢?就兩個概念,語法樹和自動機,是的,《編譯原理》就是由語法樹和它的自動機算法構(gòu)成的,一個是它的數(shù)據(jù)結(jié)構(gòu),一個是它的運算過程(算法)。祝大家編程愉快。