程式語言的發展就像是一部「如何讓人類用更自然的方式與電腦溝通」的演進史。從最早只能看懂二進位的硬體,到現在幾乎像在寫英文一樣的現代語言,這中間經歷了幾個重要階段與不同門派的演變。
以下為您梳理程式語言的發展歷程與主要類型:
一、 程式語言的發展歷程(世代演進)
程式語言通常依據「抽象化程度」(也就是離人類語言近,還是離電腦硬體近)分為五個世代:
【低階語言】---------------------------------------------> 【高階語言】
第一世代 (機器語言) -> 第二世代 (組合語言) -> 第三世代 (高階語言) -> 第四/五世代 (應用型)
1. 第一世代:機器語言 (Machine Language) — 1940年代
特點: 電腦唯一能直接讀懂的語言,全由 0 和 1(二進位) 組成。
缺點: 對人類來說極其難懂、容易出錯,且完全依賴硬體架構(換一台電腦就要重寫)。
2. 第二世代:組合語言 (Assembly Language) — 1950年代
特點: 用簡單的英文縮寫(助記碼)來代替 0 和 1。例如用
ADD代表加法、MOV代表移動資料。缺點: 雖然比機器語言好讀,但還是必須了解底層硬體結構,寫起來依然繁瑣。
註:今天在需要極致效能或開發作業系統核心(如驅動程式)時仍會用到。
3. 第三世代:高階語言 (High-Level Language) — 1950年代末至今
這是現代程式設計的基石。科學家開始開發接近人類語法(英文和數學公式)的語言,並透過「編譯器」或「直譯器」翻譯給電腦聽。
早期代表: Fortran(科學計算)、COBOL(商業應用)。
黃金時期(1970-1980年代): C 語言誕生,它兼具高階語言的結構與低階語言的效能,影響了後續幾十年的語言發展(如 C++)。
網際網路與物件導向時代(1990年代): Java(標榜「一次編寫,到處執行」)、Python、JavaScript(網頁前端霸主)相繼問世。
4. 第四世代:超高階語言 / 應用導向語言 (4GL) — 1970年代末至今
特點: 屬於「宣告式」語言。使用者只需要告訴電腦「要做什麼(What to do)」,而不需要說明「怎麼做(How to do)」。
典型代表: SQL(資料庫查詢)。你只要寫
SELECT * FROM users,不用管資料庫底層怎麼去撈資料。
5. 第五世代:人工智慧與自然語言處理 (5GL)
特點: 結合人工智慧、限制驅動(Constraint-based)與邏輯程式設計,讓電腦自行尋找解決問題的演算法。
典型代表: Prolog、LISP(常交由 AI 推理或專家系統使用)。
二、 程式語言的主要類型
除了按年代分,現代程式語言更多是依照「設計典範(Paradigm)」或「執行方式」來分類。
1. 依「設計典範 / 寫法風格」分類
這是最常見的分法,許多現代語言(如 Python、Java)其實是「多重典範語言」,同時支援以下多種風格:
| 類型 | 核心概念 | 經典代表語言 |
| 程序式 (Procedural) | 將程式視為一步一步執行的指令與步驟(函式)。 | C, Fortran |
| 物件導向 (OOP) | 將資料與行為打包成**「物件」**,強調封裝、繼承與多型,適合大型專案。 | Java, C++, C# |
| 功能式 / 函數式 (Functional) | 將計算視為數學函式的求值,避免改變狀態與更動資料(減少副作用)。 | Haskell, Lisp, Elixir |
| 腳本語言 (Scripting) | 通常不需編譯,寫完直接執行,常用於自動化、網頁開發、快速原型。 | Python, JavaScript, Ruby |
2. 依「編譯與執行方式」分類
程式碼要變成機器碼,主要有兩種翻譯官:
編譯型語言 (Compiled Language):
原理: 執行前,先用編譯器將整份原始碼打包翻譯成機器碼(檔名通常是
.exe或二進位檔)。優點: 執行速度極快。
缺點: 每次修改程式都要重新編譯;跨平台能力較差。
代表: C, C++, Go, Rust。
直譯型 / 解釋型語言 (Interpreted Language):
原理: 執行時,由直譯器一行一行即時翻譯並執行。
優點: 跨平台方便(只要有直譯器就能跑),除錯與修改彈性高。
缺點: 執行速度通常比編譯型慢。
代表: Python, JavaScript, Ruby。
註:Java 和 C# 採用了「混合型(JIT 編譯)」,先編譯成中間碼(Bytecode),再由虛擬機(JVM/.NET)直譯執行,兼顧跨平台與效能。
3. 依「型態系統(Type System)」分類
靜態語言 (Statically Typed): 寫程式時必須明確指定變數的資料型態(如
int count = 10),並在編譯時就檢查錯誤。安全性高、效能好(如:Java, C++, TypeScript)。動態語言 (Dynamically Typed): 變數的型態由系統在執行時自動推導(如
count = 10)。開發速度快、彈性大,但可能在執行時才發現型態錯誤(如:Python, JavaScript)。
總結:現代程式語言的趨勢
未來的程式語言發展正朝向「更安全、更高效、更易讀」前進。例如 Rust 解決了 C++ 的記憶體安全問題,同時保持頂級效能;而 TypeScript 為 JavaScript 加上了靜態型態,讓大型網頁專案更穩定。

沒有留言:
張貼留言