跳轉到

1977 John Backus —— FORTRAN 與「能否擺脫 von Neumann 式思考」#

「他發明了第一個成功的高階語言與第一個大編譯器,然後在 圖靈獎演講中親手宣判自己畢生工作的死刑。」

案件檔案#

項目 內容
得主 John Backus (1924–2007)
得獎理由 高階程式系統的實用化:FORTRAN、編譯器理論、BNF
關鍵詞 FORTRAN、BNF、函數式程式設計宣言

前因#

1953 年,IBM 704 的使用者都在寫組語。Backus 向主管提出大膽 提案:寫一個程式,讓機器自動把「數學式」翻成組語。業界 共識是不可能——編譯碼會比手寫慢十倍。迷題:如何證偽?

線索與推理#

案一:FORTRAN(1954–1957)#

13 人團隊、两年多、數百人年的除錯。成功關鍵:

  1. 效能承諾:編譯碼效率須達手寫組語的 50% 以上,否則 無人採用——這逼出早期最佳化(暫存器配置、迴圈展開)。
  2. 證明了「高階語言可行」——此後語言層出不窮(1966 案)。

案二:BNF 與 ALGOL 58/60#

Backus 為描述 ALGOL 語法,引入中設法(後經 Naur 改良,2005 案) 成為 巴科斯–諾爾範式:

<expr> ::= <term> | <expr> "+" <term>
<term> ::= <factor> | <term> "*" <factor>

語法第一次成為形式數學對象,可機器化、可證明歧義。 編譯器理論(詞法→語法→語義)自此奠基(2020 案)。

案三:自我翻案的圖靈獎演講(1977)#

《Can Programming Be Liberated from the von Neumann Style?》 控訴:傳統語言把程式切成「語句」逐條執行,使思考的單位 被迫降格為記憶體單位的搬運。解方:函數式程式設計(FP 系統)——

von Neumann 風:  x := x + 1        (破壞性、順序性)
FP 風:           map f (map g xs)   (值變換的組合、無狀態)

組合子 (∘) 構成代數:  (f ∘ g) ∘ h = f ∘ (g ∘ h)

他預言:程式應是函數的代數表達式,編譯器以代數律 (如 fusion:map f ∘ map g = map (f∘g))自動化簡。

理論評析#

Backus 的宣言常被誤讀為「函數式必勝」。細讀其論點:他要的 是代數性質可用的語言——程式可依等式推理(equational reasoning)。此理想部分實現:Haskell(1990)、SQL 的查詢 最佳化、編譯器的循環融合皆是其子孫。但 von Neumann 風格 因效能與可控性延續至今——宣言成為永遠的進行式。

後果#

  • FORTRAN 至今仍在科學計算服役(HPC 基石)。
  • BNF 成為所有語言標準與 parser 生成器(yacc/ANTLR)的通用語。
  • 「宣告式 vs 命令式」的語言分類學由此確立。

關聯案件#

→ 2005-Peter-Naur與ALGOL60及程式設計科學、1990-Fernando-Corbato與CTSS分時系統、λ演算史 1958-LISP