歡迎來到程式語言的世界!

你有沒有想過,當你輸入指令時,電腦是如何知道該做什麼的?這就像去一個你不懂當地語言的外國旅行。為了溝通,你需要一位翻譯。在本指南中,我們將探討不同層次的電腦語言,以及我們如何將人類編寫的程式碼轉換為電腦能理解的內容。別擔心,如果起初看起來有點深奧,我們會一步步拆解說明!


高階語言與低階語言

電腦和人類說的是完全不同的語言。因此,我們將程式語言分為兩大類:高階語言 (High-Level Languages)低階語言 (Low-Level Languages)

1. 高階語言

這些是你可能很熟悉的語言,例如 PythonJavaC++。它們的設計初衷是讓人類易於閱讀和編寫。

特點:

  • 使用類似英語的關鍵字(例如:print, if, while)。
  • 可移植性 (Portable):同一段程式碼可以在不同類型的 CPU 架構上運行。
  • 一行高階程式碼可以執行許多複雜的任務。
  • 程式設計師不需要了解電腦硬體內部的運作原理。

2. 低階語言

這些語言更接近電腦硬體實際「思考」的方式。最常見的形式是 機器碼 (Machine Code)

特點:

  • 二進位 (Binary)(即 1 和 0)組成。
  • 不可移植:為某種 CPU(如 Intel 處理器)編寫的程式碼,可能無法在另一種(如 ARM 處理器)上運行。
  • 對人類來說,閱讀、編寫和除錯都非常困難。
  • 讓程式設計師能直接控制 CPU記憶體 (Memory)

「披薩」比喻:
想像一下你想吃披薩。
高階語言就像打電話給店家說:「請給我一個義式臘腸披薩。」這對你來說很容易,店家會處理剩下的細節。
低階語言則像是為機器人寫一份 500 頁的操作手冊,精確說明要移動哪些麵粉分子,以及烤箱每一秒鐘的確切溫度。這對你來說難得多,但機器人能精確執行你的指令。

快速回顧:重點總結

  • 高階語言:人類易讀、具可移植性、語法接近英語。
  • 低階語言:電腦的原生語言、二進位(1 和 0)、難以閱讀。

翻譯器的必要性

這裡有個大秘密:電腦無法直接理解高階程式碼。電腦的 CPU 只能執行 機器碼(二進位)。

因為我們喜歡用高階語言(如 Python)編寫程式,但電腦只「說」二進位,所以我們需要一個 翻譯器 (Translator)。翻譯器是一種程式,它會將原始碼(我們編寫的內容)轉換為機器碼(電腦運行的內容)。

你知道嗎?
原始碼 (Source Code) 是由人類編寫的程式版本。一旦經過翻譯,它就會變成 目的碼 (Object Code)機器碼


編譯器與直譯器

將高階程式碼轉換為機器碼主要有兩種方式:編譯器 (Compiler)直譯器 (Interpreter)。你可以把它們想像成兩種不同類型的真人翻譯。

1. 編譯器 (Compiler)

編譯器會在程式運行之前,將 整個程式一次過翻譯完畢。它會建立一個名為 執行檔 (Executable file) 的獨立檔案(例如 Windows 上的 .exe 檔案)。

優點:

  • 最終程式運行速度非常 ,因為它已經事先翻譯好了。
  • 你可以分享執行檔,而無需提供原始碼。

缺點:

  • 如果程式中有錯誤,編譯器將無法完成編譯,且有時很難精確定位問題出在哪裡。
  • 對於大型程式,編譯過程可能需要很長時間。

2. 直譯器 (Interpreter)

直譯器會 逐行 (Line-by-line) 翻譯並執行程式碼。它會讀取一行、轉換為機器碼、執行,然後再移動到下一行。

優點:

  • 非常適合 除錯 (Debugging)。如果程式遇到錯誤,它會準確地停在那一行並通知你。
  • 你可以立即看到程式碼的執行結果。

缺點:

  • 程式運行速度較 ,因為每次運行時,它都必須重新翻譯每一行。
  • 執行程式的人必須在其電腦上安裝直譯器。

記憶小撇步:書本記憶法
編譯器 (Compiler) 就像將整本書 完整 (Complete) 翻譯成另一種語言。
直譯器 (Interpreter) 就像會議中的 即時 (Live) 口譯員,隨著對話進行 逐行 (Line-by-line) 翻譯。

快速回顧:比較表

  • 編譯器:一次性翻譯 | 運行速度快 | 產生執行檔。
  • 直譯器:逐行翻譯 | 運行速度較慢 | 非常適合發現錯誤。

常見誤區與避坑指南

1. 以為電腦「說」Python:它們不會!它們只說二進位。Python 只是我們用來最終轉換成二進位的工具。

2. 混淆可移植性:高階語言具備可移植性(可在多種裝置上運行)。低階機器碼則不具備可移植性(它是專屬於特定 CPU 的)。

3. 忘記翻譯器的存在:沒有翻譯器,你無法運行高階程式碼。如果你沒有 Python 直譯器或 Java 編譯器,電腦完全看不懂你的程式碼是什麼意思!


總結

為了編寫軟體,我們使用 高階語言,因為它們對我們來說易於理解。然而,由於 CPU 只能理解 機器碼(二進位),我們必須使用 翻譯器。如果我們想要快速、成品的程式,會選擇 編譯器;如果我們仍在編寫程式碼且需要輕鬆地找出錯誤,則會選擇 直譯器