1. 編譯型語言的工作原理
屬於編譯型語言的有:C、C++、Delphi等,其中選取C語言為代表來說明。首先,C編程的基本策略是,用程序把源代碼文件轉換為可執行文件。
典型的C實現通過編譯和鏈接兩個步驟來完成這一過程:
1.程序員使用文本編輯器創建源代碼文件
2. 編譯器把源代碼翻譯成中間代碼(機器語言),並把結果放在目標代碼文件中
3. 鏈接器把中間代碼和系統的標准啟動代碼、庫函數代碼合並成可執行文件,並交由CPU去執行
*科普:
1. 啟動代碼,充當着程序和操作系統之間的接口,不同操作系統對應不同的啟動代碼,因為這些系統處理程序的方式不同。
2. 庫函數代碼,為C標准庫中的函數,幾乎所有的C程序都要使用。例如,example.c中用了printf()函數,目標代碼文件並不包含該函數的代碼,它只包含了使用printf()函數的指令。printf()函數真正的代碼儲存在另一個被稱為庫的文件中。庫文件中有許多函數的目標代碼。
圖1 編譯器和鏈接器
2. 解釋型語言的工作原理
屬於解釋型語言的有:Python、JavaScript 、 Perl 、Shell等,其中選取Python為代表來說明。首先,Python編程的基本策略是,用程序把源代碼文件一行一行地轉換為可執行代碼。
典型的Python實現通過解釋這個步驟來完成這一過程:
1.程序員使用文本編輯器創建源代碼文件
2. 解釋器從上到下逐一讀取源代碼,讀取一行,翻譯一行,並把翻譯結果(機器語言)交由CPU去執行,以此往復
圖2 解釋器
3. 總結
1. 從執行速度而言,編譯型語言更快。
編譯型語言執行的時候,CPU可直接讀取可執行代碼(機器語言),速度很快。
解釋型語言執行的時候,需要解釋器翻譯一行,CPU執行一行,速度相對較慢。
2. 從跨平台而言,解釋型語言更便利。
編譯型語言,不僅要根據不同CPU安裝對應編譯器,還需要根據不同操作系統選用應不同啟動代碼,不便利。
解釋型語言,僅需要根據不同操作系統安裝對應解釋器,十分便利。
參考文獻:
[1]Stephen Prata.C Primer Plus[M].(第6版).北京:人民郵電出版社,2016:10-11.
[2]黑馬程序員-.Python教程_600集Python從入門到精通教程[DB].Bilibili,2017.