程式語言與翻譯程式的分類
你好!歡迎來到關於我們如何與電腦溝通的學習筆記。你有沒有想過,為什麼在 Python 輸入像 print("Hello") 這樣的指令,螢幕上真的會出現文字?電腦雖然運作速度驚人,但其實本質上非常簡單——它們只懂二進位(1 和 0)。在本章中,我們將學習不同層次的程式語言,以及如何在人類邏輯與電腦硬體之間搭起橋樑的「翻譯程式」。這是 AQA GCSE 電腦系統單元中非常重要的一部分。
1. 高階語言與低階語言
你可以把程式語言想像成一座梯子。在頂端,語言看起來很像英文;在底部,它們看起來只是一堆只有機器才看得懂的數字。
高階語言 (High-Level Languages)
你今天使用的大多數程式(以及你在學校編寫的程式,如 Python、C# 或 VB.NET)都是高階語言。
• 易於閱讀: 它們使用類似英文的關鍵字(例如 if, while, print)。
• 可攜性 (Portable): 你可以在 Windows 電腦上編寫程式碼,並在 Mac 上運行,而無需進行太多修改。
• 專注於解決問題: 你不需要擔心電腦記憶體在物理層面是如何運作的。
低階語言 (Low-Level Languages)
低階語言更接近電腦的硬體。主要分為兩類:機器碼與組合語言。
機器碼 (Machine Code):
• 這是 CPU 的終極「母語」。
• 它完全由二進位(1 和 0)寫成。
• 它具有處理器特定性 (Processor-specific)。為 Intel 晶片編寫的程式碼,可能無法在手機裡的 ARM 晶片上運作。
組合語言 (Assembly Language):
• 這是比機器碼高一級的語言。它使用助憶碼 (mnemonics)(短小的記憶輔助符號),如 ADD、SUB 或 MOV,而不是二進位。
• 它與機器碼有一對一的對應關係 (1:1 correspondence)。這意味著一行組合語言指令正好等於 CPU 的一條指令。
• 為什麼要用它? 它常用於嵌入式系統(例如洗衣機或微波爐裡的電腦),因為它讓程式設計師能完全掌控硬體。
快速回顧:
高階語言: 對人類友善,具備可攜性,用於大多數應用程式。
低階語言: 對機器友善,與硬體綁定,用於專業領域任務。
重點總結: 我們使用高階語言是因為它們讓人類編寫起來更快,且更容易除錯 (debug),儘管電腦無法直接「讀懂」它們。
2. 翻譯程式:建立溝通的橋樑
由於 CPU 只懂機器碼,任何以高階語言或組合語言編寫的程式碼必須經過翻譯。你需要了解三種翻譯程式。
1. 組譯器 (Assemblers)
組譯器將組合語言轉換為機器碼。由於我們之前提到的 1:1 對應關係,這個過程非常直接。
2. 編譯器 (Compilers)
編譯器將整個高階語言程式一次過轉換為單一的機器碼檔案(通常是 .exe 檔)。
• 比喻: 想像有人把整本《哈利波特》從英文翻譯成中文,然後給你一本完整的中文譯本來閱讀。
• 優點: 程式翻譯後執行速度非常快,而且運行該檔案時不需要再依賴編譯器。
3. 直譯器 (Interpreters)
直譯器會逐行翻譯並執行高階程式碼。
• 比喻: 想像聯合國的口譯員,聽一句英文後立即翻譯成中文。
• 優點: 對初學者非常友善,因為如果第 10 行出現錯誤,程式會立即停止,讓你輕鬆找到並修正錯誤。
你知道嗎? Python 通常是一種直譯語言,這就是為什麼學習寫程式時會感覺它如此「親切」的原因!
關鍵總結:
1. 組譯器: 組合語言 -> 機器碼。
2. 編譯器: 整個高階程式 -> 機器碼檔案。
3. 直譯器: 高階程式 -> 機器碼(隨執行隨翻譯,逐行進行)。
3. 翻譯程式的比較
如果覺得這有點深奧也不用擔心!只要記住每個工具都有各自的用途。以下是簡單的分析,幫助你在考試時做出正確判斷。
編譯器 vs. 直譯器
在以下情況使用編譯器:
• 你希望程式執行速度越快越好。
• 你希望發布軟體時,不想讓別人看到你的原始「原始碼 (source code)」。
• 專案已完成,準備正式發布供大眾使用。
在以下情況使用直譯器:
• 你還在編寫和測試程式碼(開發階段)。
• 你希望程式能輕鬆地在多種不同電腦上執行。
• 你想要快速找出程式錯誤 (bugs)。
避免常見錯誤:
學生常誤以為「翻譯程式」是一種程式語言。其實不是!翻譯程式是一段軟體,用來將一種程式碼轉換成另一種程式碼。
記憶小技巧 (「C」與「I」):
Compiler (編譯器) = Complete(翻譯整個程式)。
Interpreter (直譯器) = Immediate(立刻逐行執行)。
重點總結: 直譯器非常適合學習與測試;編譯器則最適合完成後的高效能軟體。
最終快速回顧表
• 高階語言: Python, C#, VB.NET。具可攜性,人類容易編寫。
• 低階語言: 機器碼(二進位)與組合語言(助憶碼)。
• 機器碼: CPU 唯一能直接執行的指令。
• 組譯器: 將組合語言翻譯成機器碼。
• 編譯器: 一次過將整個高階程式翻譯成機器碼;產生一個獨立檔案。
• 直譯器: 逐行將高階程式翻譯成機器碼;遇錯即停。