跳轉到

1984 Niklaus Wirth —— 「好程式語言」的定義權之爭#

「他寫出 Pascal 只為教學;一本 66 頁的報告,成為 1980 年代 全球大學的標準語言。什麼樣的語言配得上『簡單』二字?」

案件檔案#

項目 內容
得主 Niklaus Wirth (1934–2024)
得獎理由 語言設計:EULER、ALGOL-W、MODULA-2,特別是 Pascal
關鍵詞 Pascal、簡單性、Algorithms + Data Structures = Programs

前因#

1960s 末,ALGOL 語言世系臃腫化(ALGOL 68 的複雜設計分裂 了委員會)。Wirth 之問:語言的價值是否與功能數量成正比? 他在蘇黎世聯邦理工(ETH)的觀察:學生被複雜性淹沒。

線索與推理#

線索一:Pascal(1970)#

設計目標:教學 + 系統實作皆可。關鍵取捨:

強型別 + 豐富資料結構(record、set、列舉)
遞迴下降語法 → 單趟編譯器可寫成 ~4000 行
刪除:字串內建、可變長陣列、泛型(當時的「先進」功能)

著名的公式化宣言(1976 書名):

演算法 + 資料結構 = 程式

——語言的任務是給兩者合適的容器,而非更多花招。

線索二:遞迴下降與語言可編譯性#

Wirth 主張:語言應該設計得可被簡單編譯器解析。 LL(1) 文法的紀律倒逼語法簡潔——語言設計與編譯器理論 (2020 案)互為鏡像。他連編譯器也親寫:Pascal-P 系統使 語言隨原始碼擴散。

線索三:漸進降級的後續作#

Modula-2(模組化)、Oberon(1988,與作業系統合體,整個 系統含 GUI 僅約萬行程式碼)——每代都比前代小。這在 膨脹的業界是逆行,卻是他「簡單性」美學的執行證據。

理論評析#

Wirth 定律(他自嘲式總結):

軟體變慢的速度,快過硬體變快的速度。

拆解:功能蔓延 + 抽象層疊加 → 效能與可靠性的複利負債。 對策不是更快的機器,而是拒絕不必要的複雜。此案與 Brooks(1999 案)「沒有銀彈」同聲:複雜性是本質之惡, 管理它才是工程的核心。

後果#

  • Pascal 統治 1980s 教學界與早期 Mac 開發;Delphi 為其 商業後裔。
  • Ada 語言委員會、Modula、Oberon 的模組化思想進入 Java 的 package 與 Go 的 module。
  • 他的格言:「把簡單做對,比把複雜做對難得多。」

關聯案件#

→ 1977-John-Backus與FORTRAN高階程式語言、1999-Frederick-Brooks與System360及軟體工程、2020-Aho-Ullman與編譯器理論