跳轉到

1989:聖誕假期的誕生——從 ABC 的灰燼中重生#

事件#

1989 年聖誕假期,荷蘭阿姆斯特丹 CWI(Centrum Wiskunde & Informatica)的研究員 Guido van Rossum 決定利用假期撰寫一個「自己想用的」直譯式語言。他當時參與的 ABC 語言專案(CWI 1980 年代開發的教學語言)剛告失敗,而他在 Amoeba 分散式作業系統團隊中苦於缺乏一種能呼叫系統呼叫(syscall)的高階腳本語言。他以此為名 Python——取自喜劇團體 Monty Python,而非蟒蛇。

為何重要#

  • 中間層的空白:1989 年的世界,C 語言太低階(要管記憶體、編譯緩慢),Bourne shell 太弱(沒有資料結構、難寫大程式),Perl 可寫文字處理但語法如天書。Python 要填補這個「比 shell 強、比 C 好寫」的中間層。
  • 從 ABC 學到教訓:ABC 本身設計優雅(縮排區塊、無型別宣告、高階集合、一頁式規格),但失敗在——不可擴充、檔案系統整合差、無例外處理。Python 繼承其優雅,修正其封閉。
  • 「可讀性」成為設計的第一原則:程式碼是寫給人讀的,順便給機器執行。

理論與實用原因#

  • 理論原因:繼承 ABC 的「程式語言應像偽碼(pseudocode)」理念——用縮排取代 {} 括號,強制統一程式風格,把排版美學變成語法規則;這是「以語法強制慣例」的先驅(後來 Go 的 gofmt、Rust 的 rustfmt 走的是工具路線,Python 走的是語言路線)。
  • 實用原因:Guido 在 Amoeba 團隊需要一種能「快速寫出對作業系統管理介面的腳本」的工具;Python 的 import 模組系統與 C 擴充介面從第一天就設計進去。

彌補了什麼缺陷#

彌補了 ABC「封閉、不可擴充、無法觸及系統」的缺陷,以及 shell/C 對立造成的生產力斷層;同時以「可讀性」對抗 Perl 的不可維護性。

程式範例#

ABC 的縮排風格(繼承到 Python)——比較 1989 年的三種寫法:

/* C:括號 + 手動記憶體,低階但繁瑣 */
int total = 0;
int i;
for (i = 0; i < n; i++) {
    total += xs[i];
}
# Bourne shell:沒有真正的資料結構,難寫大程式
total=0
for x in 1 2 3 4 5; do
  total=`expr $total + $x`
done
# Python:縮排即語法、動態型別、像偽碼一樣好讀
xs = [1, 2, 3, 4, 5]   # 不用宣告型別
total = 0
for x in xs:
    total += x
print(total)           # 呼叫系統功能一樣簡單

縮排強制了統一風格——在 Python 裡,寫錯縮排就是語法錯誤,「排版美學」被寫進了語言。

相關條目#