眾所周知,編譯型語言經過一次編譯之后,生成平臺對應的機器碼并包裝成平臺所能識別的可執行性程式,但是它的移植性和執行效率是針對可執行性程式而言的。而解釋型語言的移植性好,是針對程式的源代碼而言的。而且,顯而易見的是,編譯型語言生成的可執行程式的執行效率,肯定比解釋型語言先編譯后執行的效率高,因此,我很難理解他們的可比性在哪?
uj5u.com熱心網友回復:
都是代碼到執行方式程序,當然可以比較還有一種是JIT,即時編譯編譯器 方式
uj5u.com熱心網友回復:
效率高未必就是最好的。就好像飛機肯定要比自行車快,為什么還有那么多人不選擇開飛機去買菜呢?
所以要根據不同的場景來作出選擇,有時你會覺得乘飛機比較好,有時你會覺得騎自行車比較好。
編譯型比解釋型要快,但那個快是按毫秒來算的,快幾毫秒,人類根本感知不到。所以跟人類打交道的界面通常用解釋型的。應為一改馬上生效,不用苦苦等待編譯。其實解釋型最大的優點是自由,出錯時還能看到原始碼。
uj5u.com熱心網友回復:
有很多方面可以比較, 比如:可讀性,執行速度,程式撰寫的長度,簡潔度。語言的功能性,可發展性,還有和其他語言或作業系統兼容性等等。
uj5u.com熱心網友回復:
已解決,先解釋如下1.執行效率比較:對于編譯型語言來說,它只需要編譯一次,從第二次開始不再需要編譯的程序,只需要直接執行編譯好的結果即可;而解釋型語言不同,它每次都需要先解釋(相當于編譯型語言的編譯程序),后執行,因此編譯型語言的執行效率要高于解釋型語言。
2.可移植性比較:假設編譯型語言和解釋型語言都在源程式的級別上,那么這兩個語言的可移植性“相同”(比如將編譯型語言的源代碼copy到另一臺機器上,這時編譯型語言跟解釋型語言差不多,只不過它是整體編譯后再運行),而現實情況往往是編譯型語言中包含有第三方的類別庫、API等等,這些第三方的東西一般情況下是沒有源代碼的,引入的都是別人打包好的程式,因此編譯型語言在正常情況下往往難以保證程式中的所有代碼都處在源程式的級別上(可以將第三方的東西理解為機器語言級別),所以編譯型語言的可移植性受到限制。而解釋型語言永遠不會出現這種情況,因為它壓根不生成可執行程式,因此其源代碼也就跟可執行程式無任何牽連,所以能夠輕松地實作源程式級別的移植。
uj5u.com熱心網友回復:
簡單形象的理解就是,編譯是翻譯好的代碼,解釋是帶個翻譯員的代碼編譯就是翻譯員把代碼都翻譯成相應系統的二進制指令(相當于翻譯成了他過語言),每個系統可以很快的根據指令(他國人能很好理解指令)執行,所以一定程度來說快(他國人直接就能執行)
解釋是沒有翻譯成相應的二進制指令(沒翻譯成他國語言),而是每次執行時請個翻譯員來解釋指令,然后再由系統執行(他國人從翻譯員那里拿到翻譯結果才執行),因為每次都需要翻譯,所以一定程度來說慢
至于移植性,也是一樣的,翻譯好的指令不一定適合另外一個系統(翻譯成他國語言的不是通用語言,另外一個國家的人看不懂),所以拿到另外一個國家別人看不懂,沒法執行,所以有局限性
而翻譯型因為執行時才翻譯(也就是帶個翻譯官隨時翻譯成各國語言),所以相對來說靈活性高,只要帶上不同的翻譯官就可以在各個國家執行。
uj5u.com熱心網友回復:
看量大不大,你用lua寫個設備協議決議邏輯然后跑在服務器上試試,高并發場景下這區別就很大了,啥事兒就怕量大,量小咋玩兒都行,量大一玩兒就死。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/80267.html
標籤:Java SE
下一篇:JAVE求解
