1966 Alan J. Perlis —— 第一樁懸案:程式語言的煉金術士#
「第一屆圖靈獎頒給了誰?為什麼不是馮·紐曼(已歿)、不是圖靈本人(更早歿), 而是一位默默推動『編譯器』的耶魯教授?」
案件檔案#
| 項目 | 內容 |
|---|---|
| 得主 | Alan J. Perlis (1922–1990) |
| 得獎理由 | 對高階程式設計技巧及其實作的影響,特別是對編譯器構建的先驅貢獻 |
| 關鍵詞 | ALGOL、編譯器、IT(Internal Translator) |
前因:機器只懂 0 與 1 的困境#
1950 年代初,電腦的每一行程式都必須用機器碼撰寫。程式設計師如同在暗房中 用火柴寫字——正確但緩慢、易錯、且不可移植。
疑點浮現:為什麼人不能直接寫數學式,讓機器自己翻譯?
線索與推理#
- 1954 年 FORTRAN 團隊(Backus,參見 1977 案)證明:編譯器可以產生 效率接近手寫組語的程式碼。
- 1956 年 Perlis 開發 IT(Internal Translator):在 CMU 前身 Carnegie 理工學院,Perlis 與 Smith 用「自舉」思路,在 IBM 650 上建出早期的 代數語言翻譯器——比 FORTRAN 更輕量。
- 1958 年 ALGOL 58、1960 年 ALGOL 60:Perlis 是 ALGOL 委員會的美方 靈魂人物。ALGOL 60 引入:
- 巴科斯範式(BNF)嚴格語法定義(參見 1977、2005 案)
- 區塊結構(begin ... end)與詞彙作用域
- 遞迴呼叫
- 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語言