歡迎來到程式語言的世界!
你有沒有想過電腦到底是如何理解你想讓它做什麼?雖然我們人類說的是像英語或西班牙語這樣的語言,但電腦真正能聽懂的只有二進制(0 和 1)。在本指南中,我們將探討如何利用不同類型的程式語言,以及將我們的代碼轉換成電腦能運行的「翻譯器」來縮小這兩者之間的差距。如果剛開始聽起來有點深奧也不用擔心——我們會把它拆解開來,一步步為你說明!
1. 高階語言與低階語言
在計算機科學中,我們會談到「層次」。層次「越高」,就越接近人類的語言;層次「越低」,就越接近電腦硬體的運作方式。
高階語言 (High-Level Languages)
目前大多數程式都是用高階語言編寫的,例如 Python、C# 或 VB.NET。
• 它們使用類似英語的關鍵字(如 if、while 和 print)。
• 它們易於人類閱讀、編寫和維護。
• 它們具有可攜性 (Portable),這意味著同一段代碼通常可以在不同類型的電腦上運行。
低階語言 (Low-Level Languages)
這些語言更接近電腦的實際處理器。你需要掌握兩種主要類型:
1. 機器碼 (Machine Code): 這是純粹的二進制。它是處理器唯一能直接執行的東西,並且針對特定類型的處理器而設計。
2. 組合語言 (Assembly Language): 它使用助記符 (Mnemonics)(如 ADD 或 MOV 等簡短縮寫)來代替二進制。它與機器碼有 1:1 的對應關係,意味著一行組合語言代碼完全等同於機器碼中的一條指令。
現實生活中的比喻:
想像你在一家餐廳。
• 高階語言: 你說:「請給我一個臘腸披薩。」(對你來說簡單又容易)。
• 低階語言: 你必須詳細說明如何揉麵團、烤箱的溫度(以開爾文為單位)、以及起司精確的分子結構。(對你來說很難,但對廚房來說卻非常精確!)。
快速複習箱:
• 高階語言: 人類友善、可攜、易於除錯。
• 低階語言: 電腦友善、針對特定處理器、運行速度極快。
重點總結: 我們使用高階語言編寫程式,因為它對人類更友善,但電腦最終仍需要將這些代碼轉換為低階的機器碼才能運作。
2. 優點與缺點
如果已經有高階語言,為什麼還會有人使用「困難」的低階語言呢?讓我們比較一下。
高階語言的優點
• 易於學習: 因為它們看起來像英語。
• 編寫速度快: 只需幾行代碼就能完成許多任務。
• 跨平台: 當你從 Intel 處理器換成 AMD 處理器時,不需要重寫整個應用程式。
低階語言的優點
• 完全控制: 你可以直接控制特定的硬體組件。
• 記憶體效率: 程式佔用的 RAM 極少,因為你只包含了絕對必要的指令。
• 速度: 它們運行速度極快。這就是為什麼組合語言經常被用於嵌入式系統(例如驅動微波爐或汽車引擎感測器的代碼)。
你知道嗎?
早期的程式設計師必須用二進制或組合語言編寫所有東西!想像一下,只用 0 和 1 來編寫一款電子遊戲,那可能需要花上一輩子的時間!
3. 翻譯器:建立連結
由於我們通常使用高階或組合語言進行編寫,但電腦只「說」二進制,因此我們需要一個翻譯器。你需要記住以下三種類型。
組譯器 (Assembler)
組譯器用於將組合語言翻譯成機器碼。由於我們前面提到的 1:1 對應關係,這是一個非常直接的過程。
編譯器 (Compiler)
編譯器會將整個高階程式一次性翻譯成一個獨立的機器碼檔案(通常稱為 .exe 檔)。
• 優點: 完成後的程式執行速度非常快,一旦檔案製作完成,你就不再需要編譯器了。
• 缺點: 如果你有一個微小的錯誤,整個程式就會編譯失敗。對於大型程式,「建置 (Build)」過程可能需要很長時間。
直譯器 (Interpreter)
直譯器會在程式運行時,逐行 (Line-by-line) 翻譯高階代碼。
• 運作方式: 它讀取一行、檢查是否有錯誤,然後呼叫內部副程式立即執行該命令。它不會產生獨立的機器碼檔案。
• 優點: 非常適合「除錯 (Debugging)」,因為程式在遇到錯誤的那一刻就會立即停止。
• 缺點: 它的執行速度比編譯後的代碼慢,因為翻譯過程是在用戶等待的同時進行的。
記憶小撇步:翻譯器助記詞
• Assembler (組譯器) = Assembly (組合語言)。
• Compiler (編譯器) = Complete (一次完成整個程式)。
• Interpreter (直譯器) = Instruction by instruction (逐條指令/逐行)。
避免常見錯誤:
許多學生認為直譯器會像編譯器一樣產生二進制檔案。它不會!它只是在讀取代碼的同時「執行」這些指令。
重點總結: 當你想製作一個快速、成品供販售的程式時,請使用編譯器。當你還在編寫和測試代碼時,請使用直譯器。
總結複習
• 高階語言是給人類看的;低階語言是給硬體用的。
• 機器碼是處理器唯一能實際運行的東西。
• 組合語言是一種低階語言,使用助記符,並與機器碼有 1:1 的連結。
• 組譯器將組合語言轉換為機器碼。
• 編譯器將高階代碼一次性轉換為一個檔案。
• 直譯器在運行時逐行翻譯高階代碼。
做得好!你剛剛完成了計算機運作最基礎的部分之一。繼續練習這些術語,你很快就會成為專家!