簡介:與電腦溝通

你有沒有想過,當你點擊按鈕或玩遊戲時,電腦是如何準確知道該做什麼的?電腦並不懂英語或任何人類語言,它們只懂電力——即「開」或「關」。為了拉近我們與電腦之間的距離,我們會使用程式語言。在本節中,我們將探討這些語言的不同級別,以及那些將我們的指令轉化為電腦能理解的「翻譯官」。

高階語言與低階語言

程式語言的設計各不相同。有些旨在方便人類閱讀,而另一些則專門為電腦處理器(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 唯一能理解的東西(二進制)。
  • 編譯器將整個程式一次過翻譯,產生執行速度快的檔案。
  • 直譯器逐行翻譯,速度較慢,但讓尋找錯誤(除錯)變得容易得多。