簡介:與電腦溝通
你有沒有想過,當你點擊按鈕或玩遊戲時,電腦是如何準確知道該做什麼的?電腦並不懂英語或任何人類語言,它們只懂電力——即「開」或「關」。為了拉近我們與電腦之間的距離,我們會使用程式語言。在本節中,我們將探討這些語言的不同級別,以及那些將我們的指令轉化為電腦能理解的「翻譯官」。
高階語言與低階語言
程式語言的設計各不相同。有些旨在方便人類閱讀,而另一些則專門為電腦處理器(CPU)的運作需求而設計。
1. 高階語言
你在學校編寫的大多數程式(例如使用 Python)都是高階語言。它們的設計目標是「對人類友善」。
- 特點: 它們使用類似英語的詞彙(例如 print, if, while),並遵循邏輯結構。
- 可攜性: 它們具有可攜性(Portability),這意味著同一段程式碼通常可以在不同類型的電腦上運行(例如 Mac、Windows PC 或 Linux 機種)。
- 用途: 它們讓程式設計師能快速編寫複雜的程式,而不必擔心電腦硬體運作的細節。
例子:Python, Java, C++, 和 Javascript。
2. 低階語言
低階語言非常接近電腦硬體真正能理解的模式。主要分為兩類:
- 機器碼: 這是最底層的語言,完全由二進制(0 和 1)組成。這是 CPU 唯一能直接「閱讀」和執行的語言。
- 組合語言: 這是比機器碼高一級的語言。它使用短小的助記符(記憶輔助),如 ADD, SUB, 或 MOV。它通常用於特定的硬體任務,例如編寫微波爐或電子手錶的軟體。
低階語言的特點:
- 對人類來說非常難以閱讀和編寫。
- 不具備可攜性;為某種特定 CPU 編寫的程式碼,換了另一種 CPU 可能就無法運行。
- 它們賦予程式設計師對電腦記憶體和硬體的完全控制權。
別擔心,一開始覺得難是正常的!
試著這樣想:高階語言就像用英語跟朋友聊天;低階語言則像給機器人一份清單,詳細說明它需要轉動的每一個齒輪和觸發的每一根電線。
快速回顧:主要差異
高階語言:易於閱讀,具可攜性,需要轉換,運行速度較慢。
低階語言:難以閱讀,依賴特定硬體,運行速度非常快。
重點總結: 高階語言偏重人類的理解,而低階語言則偏重電腦硬體的執行效率。
翻譯官:編譯器與直譯器
由於 CPU 只能理解機器碼(0 和 1),任何用高階語言編寫的程式都必須經過翻譯。主要有兩種方式:使用編譯器(Compiler)或直譯器(Interpreter)。
1. 編譯器
編譯器會將整個原始碼(你寫的指令)一次過翻譯成一個可執行檔案(例如 .exe 檔)。
- 運作方式: 它會掃描整個程式,並產生一個完整的機器碼版本。
- 速度: 翻譯過程需要時間,但一旦完成,程式執行速度非常快。
- 隱私: 你不需要將原始碼發送給使用者,只需提供「編譯後」的機器碼即可。
- 錯誤處理: 如果程式中存在哪怕一個錯誤,編譯器也會停止,直到你修正所有問題後才能完成翻譯。
2. 直譯器
直譯器會將原始碼逐行翻譯,並立即執行。
- 運作方式: 它讀取第 1 行,翻譯並執行它,然後再進行第 2 行。
- 速度: 程式能立即開始執行,但因為它是「即時」翻譯,整體運行速度較慢。
- 除錯(Debugging): 這對初學者非常友善!如果第 10 行有錯誤,程式會完美運行第 1-9 行,然後剛好在出錯的地方停止。
- 需求: 使用者的電腦必須安裝相應的直譯軟體才能運行該程式。
你知道嗎?
Python 就是一種直譯式語言!這就是為什麼你可以在整合開發環境(IDE)中立即執行程式碼,並逐行看到結果的原因。
兩者比較:一個比喻
想像你有一份法文食譜,但你只會說英語。
- 編譯器就像一位專業翻譯員,他將整份法文食譜翻譯成一本完整的英文食譜。之後你隨時可以使用這份英文版本,翻譯員不必在場。
- 直譯器則像一位坐在你廚房的朋友。他讀法文的一行,告訴你英文意思,等你做完該步驟,再繼續下一行。如果他遇到不懂的單字,他就會立刻停下來!
常見誤區
學生常誤以為編譯器會「執行」程式。事實並非如此!它只是創建了一個之後可以執行的獨立檔案。是直譯器才會在翻譯的同時執行程式碼。
重點總結: 編譯器一次過翻譯所有內容以生成快速、獨立的檔案。直譯器則逐行翻譯,因此更適合測試和尋找錯誤。
第 3.3 單元總結
- 高階語言(如 Python)類似英語,並可在不同電腦間移植。
- 低階語言(機器碼和組合語言)對人類來說很難,但對 CPU 來說運作很快。
- 機器碼是 CPU 唯一能理解的東西(二進制)。
- 編譯器將整個程式一次過翻譯,產生執行速度快的檔案。
- 直譯器逐行翻譯,速度較慢,但讓尋找錯誤(除錯)變得容易得多。