跳轉到

1966 Alan J. Perlis —— 第一樁懸案:程式語言的煉金術士#

「第一屆圖靈獎頒給了誰?為什麼不是馮·紐曼(已歿)、不是圖靈本人(更早歿), 而是一位默默推動『編譯器』的耶魯教授?」

案件檔案#

項目 內容
得主 Alan J. Perlis (1922–1990)
得獎理由 對高階程式設計技巧及其實作的影響,特別是對編譯器構建的先驅貢獻
關鍵詞 ALGOL、編譯器、IT(Internal Translator)

前因:機器只懂 0 與 1 的困境#

1950 年代初,電腦的每一行程式都必須用機器碼撰寫。程式設計師如同在暗房中 用火柴寫字——正確但緩慢、易錯、且不可移植。

疑點浮現:為什麼人不能直接寫數學式,讓機器自己翻譯?

線索與推理#

  1. 1954 年 FORTRAN 團隊(Backus,參見 1977 案)證明:編譯器可以產生 效率接近手寫組語的程式碼。
  2. 1956 年 Perlis 開發 IT(Internal Translator):在 CMU 前身 Carnegie 理工學院,Perlis 與 Smith 用「自舉」思路,在 IBM 650 上建出早期的 代數語言翻譯器——比 FORTRAN 更輕量。
  3. 1958 年 ALGOL 58、1960 年 ALGOL 60:Perlis 是 ALGOL 委員會的美方 靈魂人物。ALGOL 60 引入:
  4. 巴科斯範式(BNF)嚴格語法定義(參見 1977、2005 案)
  5. 區塊結構(begin ... end)與詞彙作用域
  6. 遞迴呼叫
  7. Perlis 的洞見:語言若不嚴格定義,編譯器就無法被證明正確。

理論核心#

ALGOL 的區塊結構可視為一個棧式作用域模型:

查詢變數 x 時:
  lookup(x) = 當前區塊有定義 ? 使用 : 向外層區塊遞迴查詢

這正是後來 LISP 動態/詞彙作用域之爭(1971 案)、以及結構化程式設計 (1972 案)的邏輯基礎。

後果與影響#

  • ALGOL 60 雖在美國商業市場敗給 FORTRAN,卻成為學術界的母語: Pascal(1984 案)、C(1983 案)、Simula(2001 案)皆為其後裔。
  • Perlis 留下的名言:「程式設計師的一生,是在不完美的語言中追求完美。」
  • 第一屆圖靈獎頒給「工程實作」而非「抽象理論」,定調了此獎的品格: 理論與實務必須會師。

關聯案件#

→ 1967-Maurice-Wilkes與EDSAC及微程式、1977-John-Backus與FORTRAN高階程式語言、 1984-Niklaus-Wirth與Pascal語言