簡介:與電腦對話
歡迎!在本章中,我們將探討如何與電腦進行真正的溝通。由於電腦本質上只是一堆微型開關的集合,它們天生無法理解英語甚至是 Python。我們需要程式語言(Programming Languages)來架起人類思想與電腦電脈衝之間的橋樑。理解這些語言的分類,能幫助你為工作選擇合適的工具,並深入了解軟體如何在硬體上運行。
1. 大局觀:語言的層次
程式語言通常分為兩大類:低階語言(Low-Level Languages)和高階語言(High-Level Languages)。你可以把這視為一種「接近程度」的量尺。一端非常接近電腦的「大腦」(硬體),而另一端則更貼近人類的思考與表達方式。
低階語言
低階語言與特定電腦的處理器(CPU)架構緊密相連。你需要掌握兩種類型:
• 機器碼(Machine Code):這是最基本的層次,完全由二進制(Binary)(即 1 和 0)組成。這是電腦唯一能「理解」並直接執行的語言。
• 組合語言(Assembly Language):這是比機器碼高一階的語言。它不再使用 1 和 0,而是使用稱為助記符(Mnemonics)的簡短文字指令。例如,與其寫一長串二進制代碼,你可以寫 ADD 來進行加法運算,或寫 MOV 來移動數據。
高階語言
高階語言(如 Python、C# 或 Java)使用類英語的單詞和數學符號。它們的設計初衷是讓人們更容易閱讀和編寫。AQA 課程大綱特別聚焦於指令式高階語言(Imperative High-Level Languages)。這類語言要求你向電腦提供一系列步驟式的指令來執行任務(就像食譜一樣)。
快速回顧區
低階:接近硬體,使用二進制或助記符,針對特定類型的 CPU。
高階:接近人類,使用類英語單詞,可在不同類型的 CPU 上運作。
重點總結:低階語言是為機器設計的;高階語言則是為程式設計師設計的。
2. 深入探討:機器碼 vs. 組合語言
別擔心,這些聽起來可能有點嚇人!大多數現代程式設計師很少需要直接撰寫這些代碼,但了解它們的運作方式對於理解電腦系統至關重要。
機器碼(「真正」的語言)
機器碼中的每一條指令都是一種二進制模式。例如,CPU 可能看到 10110000 01100001,並精確地知道要開啟或關閉哪些電路。因為它純粹是數字,人類在編寫時極易出錯,且更難進行除錯(Debug)!
組合語言(「秘密代碼」)
組合語言的誕生是為了讓低階編程變得更容易。它使用助記符作為機器碼的速記法。
• 例子:程式設計師會寫 LDA(代表 "Load into Accumulator",即「載入到累加器」),而不是寫 00000110。
• 關鍵點:由於 CPU 依然只懂二進制,組合語言必須通過一個名為組譯器(Assembler)的程式翻譯成機器碼。
你知道嗎?
因為組合語言與硬體連接極深,所以它是處理器專用的。這意味著為手提電腦的 Intel 處理器編寫的組合語言程式,無法在智能手機的 ARM 處理器上執行!
重點總結:組合語言是人類可讀版的機器碼,但仍需透過組譯器轉為二進制,CPU 才能執行。
3. 高階指令式語言
「指令式(Imperative)」一詞源於「命令」。在指令式高階語言中,程式設計師編寫一系列改變程式「狀態」(即記憶體中儲存的數據)的指令。
為什麼我們使用高階語言?
你們在課堂上寫的大多是高階語言。它們具備可移植性(Portability),意味著你可以編寫一次代碼,並在多種不同類型的電腦上運行。此外,它還提供了抽象化(Abstraction)——你無需了解 CPU 如何管理暫存器(Register),只需學會如何寫出 total = price + tax 即可。
與低階語言的關係
電腦仍然無法直接執行高階代碼,必須將其翻譯為機器碼。這通常由編譯器(Compiler)或直譯器(Interpreter)完成。單行高階代碼(如 print 語句)可能會轉換成數十甚至數百條機器碼指令!
記憶法:「H」與「L」規則
High-level(高階) = Human-friendly(人類友善)。
Low-level(低階) = Linked to hardware(與硬體掛鉤)。
重點總結:指令式語言關注的是程式如何透過一連串指令達成結果。
4. 層次比較:優缺點分析
這是考試中的熱門考題!讓我們看看為什麼要選擇其中一種語言。
高階語言的優點
• 易於學習:代碼看起來更像英語。
• 開發速度快:能更迅速地編寫複雜的程式。
• 可移植性:代碼可在不同類型的 CPU 架構上執行。
• 易於除錯:在高階代碼中尋找和修復錯誤要簡單得多。
低階語言的優點
• 速度:程式可針對特定 CPU 進行優化,運行速度極快。
• 記憶體效率:佔用極少的記憶體(RAM)空間。
• 直接硬體控制:對於編寫設備驅動程式(Device Drivers)(如告知電腦如何與印表機或顯示卡溝通的軟體)至關重要。
• 無需翻譯(針對機器碼):機器碼可立即執行,無需等待編譯。
常見誤區
學生常誤以為組合語言就是「機器碼」。這是不對的!組合語言是文字;機器碼是二進制。你需要組譯器來跨越這道鴻溝。
重點總結:編寫通用應用程式或追求開發效率時,請使用高階語言;當你需要極致效能或直接控制硬體時,則使用低階語言。
最終總結清單
在繼續學習前,請確保你能:
• 將機器碼定義為二進制,且是 CPU 唯一能執行的語言。
• 解釋組合語言使用助記符,並需要組譯器。
• 將高階語言描述為類英語且具可移植性。
• 將指令式定義為改變程式狀態的一系列指令序列。
• 列舉至少兩個低階語言及高階語言的優點。