在計算機程序設計中,當人類可讀的源代碼被編譯器解析時,編譯器通常會將源命令轉換成一系列指令,這些指令不是完全的本機代碼,而是可以進一步處理的,由編譯器或其他軟件工具優化或編譯的。所產生的文件包含被稱為中間語言的...
在計算機程序設計中,當人類可讀的源代碼被編譯器解析時,編譯器通常會將源命令轉換成一系列指令,這些指令不是完全的本機代碼,而是可以進一步處理的,由編譯器或其他軟件工具優化或編譯的。所產生的文件包含被稱為中間語言的指令,因為編譯器所使用的語言對更大的操作系統來說既沒有意義,也不是程序員首先用來編寫代碼的語言,相反,它是一種在程序的編寫和執行之間起橋梁作用的語言。中間語言有時被用來允許編譯器進行非常精確的優化,以便程序更有效地運行,但它也可以用來生成輸出文件,這些文件可以在不同的、不兼容的系統之間移植語言的實際語法可以類似于機器代碼或其他類型的非人類可讀字節碼,或者該語言可以只是一種現有的跨平臺計算機編程語言。

人工控制計算機當用于編譯器優化時,語言編譯器將源代碼文件中的每個語句分解為中間語言,一個人類可讀的編程語句可以分解成幾十個機器語言指令,因此中間語言創建了一個抽象級別,編譯器可以使用該抽象級別來識別代碼中可以進行優化的區域,而無需首先將代碼綁定到任何本機實現或庫一旦完成,中間代碼文件就可以進一步編譯以生成本機二進制文件,或者可以通過另一個程序(稱為解釋器)運行,該程序將根據需要將代碼編譯為本機指令來執行代碼一些語言,如Java?,使用中間語言創建經過優化但也可移植到其他計算機系統的編譯文件。這種代碼有時被稱為字節碼,類似于機器代碼或匯編語言。字節碼以獨立于平臺的方式存儲在文件中,這意味著它可以傳輸到任何計算機系統或設備它可以運行解釋器。一旦字節碼在系統上,它既可以作為解釋程序運行,也可以編譯為在目標系統上本機運行。在某些情況下,一種計算機語言的設計目的是使編程更容易達到特定的目的,例如交互式web應用程序,但設計者不希望為不同的系統包括自定義的編譯器、解釋器或插件。在這些情況下,編譯器的中間語言可以是已經建立了跨平臺解釋器的現有語言。在這種情況下,生成的中間語言是人類可讀的。作為中間語言的計算機編程語言的一個例子是JavaScript?,它的優勢在于,截至2011年,它幾乎可以在任何平臺上的任何web瀏覽器中運行。