前面我們知道了高級編程語言計算機是不能直接識別的,需要通過翻譯成機器碼然后交由計算機執行,
根據不同的翻譯機制,又分為編譯型和解釋型,
注意,翻譯源代碼是一個非常復雜的程序,大致包括詞法分析,語法分析,語意分析,性能優化,目標代碼生成等五個步驟,在初學階段沒有必要研究這個,如果感興趣可以閱讀《編譯原理》一書,
接下來我會使用通用的語言和類比的方式講解編譯和解釋,
編譯型
如果把高級編程語言撰寫的代碼比作一篇英文文章,計算機比作一個不懂英文的人,那么,為了讓這個人閱讀這篇文章,可以找一名懂英文的翻譯將這篇文章整體翻譯成中文版,然后他就可以隨時隨地的閱讀這篇翻譯后的文章,
編譯的程序其實跟上面翻譯的程序很像,
編譯型編程語言就是通過編譯器(英文翻譯)將源代碼(編譯型編程語言撰寫的程式,類比英文文章)編譯(翻譯)成可執行檔案(翻譯后的文章),

可執行檔案可以在任何支持的平臺上,脫離編譯環境運行,因為可執行程式就是機器碼,所以它的執行效率高,但是編譯型編程語言一般是不能跨平臺的,也就是說不能在不同的作業系統間任意切換, 并且修改程式也非常不方便,只要源代碼修改了,都需要重新編譯生成新的可執行檔案,C語言,C++就是典型的編譯型編程語言,
解釋型
接上面的類比,翻譯這篇英文文章,還可以通過隨身電子詞典,逐字逐句的邊看邊翻譯,
解釋型編程語言就是通過解釋器(電子詞典)將源代碼(解釋型編程語言撰寫的程式)逐行解釋成機器碼,然后交由計算機執行,

解釋型編程語言撰寫的程式離不開解釋器,因為是邊翻譯邊執行所以相對效率不高,但是修改起來非常方便,只要源代碼修改了,下一次執行就是修改后的代碼,解釋型編程語言大都可以跨平臺運行,這歸功于解釋器,Python,php就是典型的解釋型編程語言,
關于Python
Python屬于典型的解釋型編程語言,支持所有常見的平臺,例如Linux,Windows,Mac OS, Android, FreeBSD等等,只要在不同的平臺上安裝了對應的解釋器,代碼就可以正確運行,一般不需要擔心任何兼容性問題,真正做到了"一次撰寫,到處運行",
另外,關于執行效率,你可能會看到很多人說python的執行效率差,那只是相對而言,隨著硬體性能的提升,和很多優化手段,python在某些時候執行效率甚至會超過c語言,所以忘記這個效率問題,全心全意的學習python吧,
總結
總結編譯型編程語言與解釋型語言的區別如下表:
| 型別 | 原理 | 優點 | 缺點 |
|---|---|---|---|
| 編譯型語言 | 通過專門的編譯器,將所有源代碼一次性轉換成特定平臺(Windows、Linux 等)執行的機器碼(以可執行檔案的形式存在), | 一次編譯,多次運行,脫離編譯環境,并且運行效率高, | 可移植性差,不夠靈活, |
| 解釋型語言 | 由專門的解釋器,根據需要將部分源代碼臨時轉換成特定平臺的機器碼, | 跨平臺性好,通過不同的解釋器,將相同的源代碼解釋成不同平臺下的機器碼, | 一邊執行一邊轉換,效率不搞, |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/500958.html
標籤:其他
上一篇:Java SE - 集合
下一篇:動態陣列底層是如何實作的
