計算機不能直接理解除機器語言之外的語言,因此只有把程序員編寫的程序翻譯成機器語言,計算機纔可以執行程序。
將其餘語言翻譯成機器語言的工具,被稱之爲:編譯器。
編譯器的翻譯方式有兩種:編譯和解釋。兩種方式之間的區別在與翻譯的時間點不一樣。當編譯器以解釋方式運行的時候,也稱之爲解釋器。程序員
解釋型語言(Interpreted language)是一種編程語言。這種類型的編程語言,會將代碼一句一句直接運行,不須要像編譯語言同樣,通過編譯器先編譯爲機器代碼,以後再運行。
這種語言須要利用解釋器,在運行期,動態將代碼逐句解釋爲機器代碼,或是已經預先編譯爲機器代碼的子程序,以後再運行。編程
編譯型語言(Compiled language)是一種以編譯器來實現的編程語言。它不像解釋語言同樣,由解釋器將代碼一句一句運行,而是以編譯器,先將代碼編譯爲機器代碼,再加以運行。
通常而言,用編譯語言寫成的程序,在運行期的運行速度,一般比用解釋型語言寫的程序快。由於程序在編譯期,已經被預先編譯成機器代碼,能夠直接運行,不用像解釋型語言同樣,還要多一道直譯程序。編程語言
字節碼(Bytecode)一般指的是已經通過編譯,但與特定機器代碼無關,須要解釋器轉義後才能成爲機器代碼的中間代碼。字節碼一般不像源碼同樣能夠讓人閱讀,而是編碼後的數值常量、引用、指令等構成的序列。
字節碼主要爲了實現特定軟件運行和軟件環境、與硬件環境無關。字節碼的實現方式是經過編譯器和虛擬機。編譯器的做用是將源代碼編譯成字節碼,虛擬機是將字節碼轉譯爲能夠直接運行的機器代碼。工具
理論上,任何變成語言均可以是編譯式或者解釋型的。他們之間的區別,僅與程序的應用有關。許多編譯語言同時採用編譯器與解釋器來實現,例如Java就是採用混合方式,先將代碼編譯爲字節碼,在運行時再進行解釋,因此Java是一種先編譯後解釋的語言。編碼