程式語言執行模式
編譯式、直譯式與混合式
本教材詳細介紹程式語言的三種主要執行模式:**編譯式 (Compiled)**、**直譯式 (Interpreted)** 以及兩者的**混合模式**,並特別分析了 Python 的執行機制。
一、 編譯式語言 (Compiled Languages)
概念
編譯式語言在程式執行前,會透過「**編譯器 (Compiler)**」將整個原始碼一次性轉換成機器可以直接理解和執行的「**機器碼 (Machine Code)**」。
執行流程
代表語言
C, C++, Rust, Go, Swift
優缺點
- 優點: 執行速度快(接近硬體極限)、效能優化程度高、程式碼隱私性高。
- 缺點: 開發流程長(每次修改需等待編譯)、跨平台性差(需針對不同平台重新編譯)。
二、 直譯式語言 (Interpreted Languages)
概念
直譯式語言在程式執行時,透過「**直譯器 (Interpreter)**」**逐行 (Line-by-line)** 讀取、翻譯並立即執行原始碼。
執行流程
代表語言
Python(開發者角度), JavaScript (在瀏覽器中), Ruby, PHP, Shell Script (Bash)
優缺點
- 優點: 開發效率高(無需編譯等待)、跨平台性強(只要有直譯器即可運行)。
- 缺點: 執行速度慢(每次運行需即時翻譯)、錯誤偵測晚(執行到錯誤行才發現)。
三、 半編譯半直譯語言 (Hybrid / Bytecode Languages)
概念
混合式語言結合了編譯與直譯,首先將原始碼編譯成一種平台中立的「**位元碼 (Bytecode)**」,再由一個「**虛擬機器 (Virtual Machine, VM)**」進行直譯或使用 JIT 技術執行。
執行流程
代表語言
Java (JVM), C# (CLR / .NET), Python (技術細節上)
優缺點
- 優點: 高效能的跨平台性(一次編譯,到處運行)、JIT 技術可進一步優化效能。
- 缺點: 啟動較慢(VM 需要初始化)、資源消耗較大(VM 佔用記憶體)。
四、 Python 的執行模式深度解析
Python 通常被認為是一種**直譯式語言**,但在嚴格的技術層面上,它更準確地屬於**半編譯半直譯式**。
從開發者角度:直譯式
從開發和使用的直觀體驗來看,Python 程式碼直接運行原始檔(.py),無需手動編譯,符合直譯式語言的特性。
從底層技術角度:半編譯半直譯
Python 的執行分為兩階段,使其具有混合式的特性:
-
編譯成位元碼: 當你運行 Python 程式時,直譯器會首先將原始碼編譯成針對 **Python 虛擬機器 (PVM)** 的「位元碼」。這些位元碼通常緩存於
__pycache__資料夾的.pyc檔案中。 - 虛擬機器直譯: 隨後,這些位元碼會被 **PVM** 直譯執行,將位元碼指令轉換為底層機器碼來實際運行。
結論: 雖然 Python 的外部行為是直譯式的,但其內部的位元碼機制使其採用了類似 Java 的**混合執行模型**。
總結比較表
| 特性 | 編譯式 | 直譯式 | 混合式 (位元碼) |
|---|---|---|---|
| 翻譯時機 | 執行前一次性完成 | 執行時逐行翻譯 | 執行前編譯成位元碼;執行時由 VM 翻譯 |
| 執行速度 | 最快 | 較慢 | 快速 (透過 JIT 逼近編譯式) |
| 可執行檔 | 原生機器碼 | 無 (依賴原始碼和直譯器) | 位元碼檔案 |
| 代表語言 | C, C++, Go | Python, JavaScript, PHP, Ruby | Java, C#, Python |


留言
張貼留言