from Creating, Compiling and Running Your Program
compilation的目的在於將高階語言轉成可執行的machine code。通常中間會先轉成assembly language。一個程式要能執行,必須經過六大步驟(該行為由compiler負責),分別是:語彙分析、語法分析、語意分析、產生中間碼、最佳化、產生目的碼。純直譯式(interpretation)的語言不需要編譯,執行的時候才由直譯器進行這六個步驟,Perl便是屬於這類;純編譯式(compilation)的語言在程式執行前需要進行編譯,完成上述的六大步驟之後得到執行檔,此執行檔用到底下硬體平台的指令集和相關的函式庫,所以直接就可執行,不需要直譯器,這樣的執行檔我們稱為 native code,C/C++便是屬於這類。
除了純直譯和純編譯的語言之外,還有一種叫做混合式語言,傳統的 Java 就屬於這一類。Java 程式需要編譯器來進行前四大步驟(語彙分析、語法分析、語意分析、產生中間碼),產生出來的中間碼就是 class 檔。這些 class 檔不能直接執行,需要直譯器來進行最後的翻譯步驟才能執行。
編譯程式包含一群子程式,下列何者不屬於編譯程式的子程式?
a.分析程式(scanner) b.執行程式(execute)
c.剖析程式(parser) d.目的碼產生程式(code generator)
九十四年公務人員初等考試試題資料處理大意