任何程式語言要被計算機理解,都需要轉化成機器碼才行,而轉化的過程分為兩種主要的形式,即編譯和解釋。
編譯(compile)是將一種語言轉換為另一種語言的動作,而一般來說,"另一種語言”通常是機器碼(machine code/native code),即全部由 0 和 1 組成的語言,或者某種公共語言,當然機器碼可以看作所有語言的目標公共語言。
使用編譯器讀入一 個檔案,將會產出一個由目標語言寫成的另一個檔案,例如,C# 編譯器會產出擴充套件名為 exe 或 dll 的檔案,目標語言是 IL。
而相對的,解釋(interpret)雖然也會將程式碼翻譯為機器碼,但是,卻不會產生目標檔案。
因此,每次執行直譯語言時,都需要重新進行解釋。
不太準確地講,編譯可以類比為做好一桌菜才開吃,而解釋可以類比為吃火鍋,邊涮邊吃。
.NET 框架語言和 C、C++ 都是編譯型語言,而它們之間還有一點不同。
.NET 框架語言是通過兩步編譯變成機器碼的,如下圖所示。