1. 程式人生 > >解釋型語言VS編譯型語言

解釋型語言VS編譯型語言

源碼 同時 執行 編碼 應用 java 轉譯 轉義 不用

前言

計算機不能直接理解除機器語言以外的語言,所以只有把程序員編寫的程序翻譯成機器語言,計算機才能夠執行程序。
將其他語言翻譯成機器語言的工具,被稱之為:編譯器。
編譯器的翻譯方式有兩種:編譯和解釋。兩種方式之間的區別在與翻譯的時間點不同。當編譯器以解釋方式運行的時候,也稱之為解釋器。

解釋型語言

解釋型語言(Interpreted language)是一種編程語言。這種類型的編程語言,會將代碼一句一句直接運行,不需要像編譯語言一樣,經過編譯器先編譯為機器代碼,之後再運行。
這種語言需要利用解釋器,在運行期,動態將代碼逐句解釋為機器代碼,或是已經預先編譯為機器代碼的子程序,之後再運行。

編譯語言

編譯語言(Compiled language)是一種以編譯器來實現的編程語言。它不像解釋語言一樣,由解釋器將代碼一句一句運行,而是以編譯器,先將代碼編譯為機器代碼,再加以運行。
一般而言,用編譯語言寫成的程序,在運行期的運行速度,通常比用解釋型語言寫的程序快。因為程序在編譯期,已經被預先編譯成機器代碼,可以直接運行,不用像解釋型語言一樣,還要多一道直譯程序。

字節碼

字節碼(Bytecode)通常指的是已經經過編譯,但與特定機器代碼無關,需要解釋器轉義後才能成為機器代碼的中間代碼。字節碼通常不像源碼一樣可以讓人閱讀,而是編碼後的數值常量、引用、指令等構成的序列。
字節碼主要為了實現特定軟件運行和軟件環境、與硬件環境無關。字節碼的實現方式是通過編譯器和虛擬機。編譯器的作用是將源代碼編譯成字節碼,虛擬機是將字節碼轉譯為可以直接運行的機器代碼。

總結

理論上,任何變成語言都可以是編譯式或者解釋型的。他們之間的區別,僅與程序的應用有關。許多編譯語言同時采用編譯器與解釋器來實現,例如Java就是采用混合方式,先將代碼編譯為字節碼,在運行時再進行解釋,所以Java是一種先編譯後解釋的語言。

解釋型語言VS編譯型語言