Skip to content

程式語言圖譜

前言

為什麼有這麼多程式語言?該學哪個?本章帶你從「語言演化」到「程式設計範式」到「如何選擇」,建立對程式語言全景的理解。結論先行:沒有最好的語言,只有最適合場景的語言。

這篇文章會帶你學什麼?

學完這章後,你將獲得:

  • 理性選型能力:面對「學什麼語言」時,能根據專案需求做出判斷
  • 範式理解深度:理解「物件導向」、「函式式程式設計」是不同的思維方式
  • 歷史演進視角:看到 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 (+) 0

2.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, GoPython, RubyJava, JavaScript

5. 如何選擇程式語言?

按場景選擇

場景推薦語言理由
Web 前端JavaScript, TypeScript瀏覽器只認 JS
Web 後端Go, Java, Python, Node.js生態成熟
行動開發Swift (iOS), Kotlin (Android)官方推薦
AI / 資料PythonPyTorch、Pandas 全在 Python
系統程式設計C, Rust直接操控硬體
雲原生Go, RustDocker/K8s 都是 Go 寫的

學習路線建議

  1. Python — 語法最簡單,AI 時代入口
  2. JavaScript — Web 開發必備,前後端通吃
  3. TypeScript — 給 JS 加上型別系統
  4. Go 或 Rust — 理解編譯型語言和底層概念

6. 總結

核心要點

  1. 語言演化:從機器語言到高階語言,越來越接近人類思維
  2. 程式設計範式:命令式、物件導向、函式式、宣告式,各有適用場景
  3. 型別系統:靜態/動態、強/弱,影響安全性和靈活性
  4. 執行方式:編譯型快,直譯型靈活,JIT 兼顧
  5. 沒有銀彈:根據場景選語言,而不是追求「最好的語言」

下一步學習