程式語言圖譜
前言
為什麼有這麼多程式語言?該學哪個?本章帶你從「語言演化」到「程式設計範式」到「如何選擇」,建立對程式語言全景的理解。結論先行:沒有最好的語言,只有最適合場景的語言。
這篇文章會帶你學什麼?
學完這章後,你將獲得:
- 理性選型能力:面對「學什麼語言」時,能根據專案需求做出判斷
- 範式理解深度:理解「物件導向」、「函式式程式設計」是不同的思維方式
- 歷史演進視角:看到 70 多年語言演化
- 後續學習基礎:為理解新語言設計理念打下基礎
| 章节 | 內容 | 核心概念 |
|---|---|---|
| 第 1 章 | 語言演化 | 從機器語言到高階語言 |
| 第 2 章 | 程式設計範式 | 命令式、物件導向、函式式 |
| 第 3 章 | 語言選擇 | 場景驅動的選型方法 |
0. 人類如何和電腦「說話」?
- 直接打 0 和 1 — 最原始,效率極低(機器語言)
- 用助憶符代替 —
MOV AX, 1(組合語言) - 用接近自然語言 —
int sum = 1 + 2;(高階語言)
1. 程式語言的演化
Programming Language MapEvolution · paradigms · type systems · language comparison
1940s
Machine language
Binary
1950s
Assembly and early high-level languages
AssemblyFortranLispCOBOL
1970s
Systems programming era
CPascalSmalltalk
1980s-90s
OOP and the Internet
C++JavaPythonJavaScript
2000s
Modern languages
C#GoScalaRuby
2010s+
Next-generation languages
RustSwiftKotlinTypeScript
2000sModern languages
Language design focused more on developer productivity and safety. Go was created for cloud-native infrastructure.
GoConcurrency-friendly and used to build Docker and Kubernetes
RubyRails brought a major productivity boost to Web development
Core idea:Programming languages have evolved from machine code to modern high-level languages, steadily moving closer to human thinking.
一句話總結
程式語言的演化趨勢:越來越接近人類思維,越來越安全,越來越高效。
2. 程式設計範式:思考問題的方式
2.1 命令式 — 「一步步告訴電腦怎麼做」
c
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
}2.2 物件導向 — 「把資料和行為封裝成物件」
python
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print(f"{self.name} says woof!")2.3 函式式 — 「用純函式組合,不修改狀態」
haskell
sum = foldl (+) 02.4 宣告式 — 「只說做什麼,不管怎麼做」
sql
SELECT name FROM users WHERE active = true實際開發中
現代語言大多是多範式的。Python 既支援物件導向,也支援函式式;JavaScript 也一樣。
3. 型別系統:資料的交通規則
| 強型別 | 弱型別 | |
|---|---|---|
| 靜態 | Java, Rust, TypeScript — 最安全 | C, C++ — 高效但要小心 |
| 動態 | Python, Ruby — 靈活且安全 | JavaScript, PHP — 靈活但容易出錯 |
關鍵問題:"1" + 1 等於什麼?
- JavaScript(弱型別):
"11"— 悄悄幫你轉了 - Python(強型別):
TypeError— 讓你自己想清楚
4. 編譯型 vs 直譯型
| 編譯型 | 直譯型 | JIT | |
|---|---|---|---|
| 過程 | 先全部翻譯,再執行 | 邊讀邊執行 | 先直譯,熱點再編譯 |
| 速度 | 最快 | 較慢 | 中等 |
| 代表 | C, Rust, Go | Python, Ruby | Java, JavaScript |
5. 如何選擇程式語言?
按場景選擇
| 場景 | 推薦語言 | 理由 |
|---|---|---|
| Web 前端 | JavaScript, TypeScript | 瀏覽器只認 JS |
| Web 後端 | Go, Java, Python, Node.js | 生態成熟 |
| 行動開發 | Swift (iOS), Kotlin (Android) | 官方推薦 |
| AI / 資料 | Python | PyTorch、Pandas 全在 Python |
| 系統程式設計 | C, Rust | 直接操控硬體 |
| 雲原生 | Go, Rust | Docker/K8s 都是 Go 寫的 |
學習路線建議
- Python — 語法最簡單,AI 時代入口
- JavaScript — Web 開發必備,前後端通吃
- TypeScript — 給 JS 加上型別系統
- Go 或 Rust — 理解編譯型語言和底層概念
6. 總結
核心要點
- 語言演化:從機器語言到高階語言,越來越接近人類思維
- 程式設計範式:命令式、物件導向、函式式、宣告式,各有適用場景
- 型別系統:靜態/動態、強/弱,影響安全性和靈活性
- 執行方式:編譯型快,直譯型靈活,JIT 兼顧
- 沒有銀彈:根據場景選語言,而不是追求「最好的語言」
下一步學習: