核心概念
編譯型 vs 直譯型
你寫的程式碼是給人看的,但機器只會執行它自己那套底層指令——所以中間必須有人來「翻譯」。翻譯大體上有兩種方式,而這個區別會影響你如何建置、發布和除錯程式。
編譯型語言(比如 C 或 Rust)會在程式執行之前,一次性把整份程式碼全部翻譯成一個可以獨立執行的機器檔案。這是單獨的一道「建置(build)」工序——啟動前要等一會兒,但成品跑起來往往很快,而且很多錯誤在編譯時就被揪出來了。
直譯型語言(比如 Python 或 JavaScript)則是一邊執行一邊翻譯,逐行就地執行。它沒有建置這道工序,所以你改完就能立刻重跑——很適合隨手把玩——但代價是:錯誤往往要等真正執行到那一行時才冒出來。
實際上兩者的界線挺模糊:許多現代語言會先編譯成一種中間的「位元組碼(bytecode)」,再配上各種巧妙的技巧。但這個心智模型依然管用——是「先把全部翻譯完」,還是「走到哪翻到哪」。
# Compiled: build once, then run the binary $ rustc hello.rs && ./hello # Interpreted: no build step, just run the source $ python hello.py
編譯型語言先建置、再執行;直譯型語言直接執行原始碼。
一個粗略的經驗法則:編譯型用啟動時間換執行速度,直譯型用執行速度換即時回饋。
又稱
另見