編譯是什麼意思
編譯(Compilation)是將原始碼(Source Code)轉換成機器碼(Machine Code)或目標碼(Object Code)的過程。原始碼是由人類編寫的、人類可讀的程式碼,通常是以高階程式語言書寫,如C、C++、Java、Python等。而機器碼或目標碼則是電腦可以直接執行的低階指令,這些指令是為特定的硬體和作業系統設計的。
編譯器(Compiler)就是執行編譯過程的軟體。它的工作流程通常包括以下幾個階段:
-
詞法分析(Lexical Analysis):將原始碼分解成基本的語法單位,如單詞、符號和數字。
-
語法分析(Syntactic Analysis):檢查原始碼的語法是否正確,並將其轉換成抽象語法樹(Abstract Syntax Tree, AST)。
-
語義分析(Semantic Analysis):檢查原始碼的語義是否正確,例如變量是否正確初始化,函數定義和調用是否匹配等。
-
代碼生成(Code Generation):將AST轉換成機器碼或目標碼。
-
連結(Linking):如果原始碼包含函數或變量定義的外部引用,則需要連結器(Linker)將目標碼與其他函數庫相連結,形成一個可以執行的可執行檔(Executable)。
編譯的結果可以是可執行檔,也可以是動態連結庫(Dynamic Link Library, DLL)或靜態連結庫(Static Link Library)。編譯過程通常是一種耗時的操作,因為它涉及將高階語句轉換成低階的機器指令。
與編譯相對的是解釋(Interpretation),解釋器(Interpreter)直接執行高階程式語言的原始碼,或者將其轉換成中間表示形式,然後再執行。解釋器通常比編譯器更靈活,但執行效率通常較低。