1979 Kenneth Iverson —— APL:把數學寫成一門語言#
「一門只用奇怪符號的語言,一句話就能完成別的語言十行程式。 它是精英的密碼,還是數學應有的樣子?」
案件檔案#
| 項目 | 內容 |
|---|---|
| 得主 | Kenneth E. Iverson (1920–2004) |
| 得獎理由 | 程式語言理論與 APL 的貢獻 |
| 關鍵詞 | APL、陣列程式設計、notation as a tool of thought |
前因#
Iverson 在哈佛教授資料處理時的困擾:傳統數學記號不夠用—— 矩陣、群組、化約等操作需要長篇描述。他自 1957 年起打造一套 統一的記號系統,先當教材、後成語言 APL(A Programming Language, 1962)。
線索與推理#
線索一:陣列作為第一公民#
APL 的核心決定:標量只是零維陣列,所有運算天生作用於 任意維度:
+/1 2 3 4 → 10 (+ 的化約 reduce)
+/⍳1000 → 500500 (1..1000 之和,一句)
1+2×3⍴⍳9 → 對 3×3 矩陣逐元素加
等價於現代的 sum(range(1000)) 與 NumPy 向量化—— 把「迴圈」提升為「代數運算子」。
線索二:記號即思考工具#
1980 年圖靈獎演講標題《Notation as a Tool of Thought》。 Iverson 的論證結構:
- 好記號使常見操作簡短(降低認知負荷)
- 簡短使代數恆等式可見(如
+/⍳n = (n×n+1)÷2一眼可驗) - 恆等式引導等價變換 → 演算法改進
這與 Knuth 的演算法分析、Floyd 的不變式同屬「形式化救思考」 陣營,但 Iverson 主張記號本身就是最大的槓桿。
線索三:影響鏈#
APL 的單字元運算子影響了:S/NumPy/R 的向量化、 FP 系統(Backus 1977 案的參考對象之一)、以及今日 J、K、Q(金融界高頻資料仍用 KDB+/Q,即 APL 後裔)。
理論評析#
APL 之謎:功能超前數十年,為何未成主流?拆解:
| 因素 | 分析 |
|---|---|
| 字元集 | 需專用鍵盤/字型,輸入門檻高 |
| 可讀性 | 短≠易讀,「寫一次、讀一生」 |
| 時代 | 1970s 終端技術限制 |
判決:APL 證明了抽象層次(陣列)的正確,但其符號學 實驗失敗。後人以 ASCII 命名運算子繼承其精神(NumPy、 Pandas、Julia)。
後果#
- 「向量化」成為科學計算與深度學習(GPU 批次運算,2018 案) 的效能前提——以資料佈局代替控制流正是 APL 哲學。
- 2012 年後 array languages 復興(kdb+ 在華爾街、APL 慕尼黑 舊會議重開)。
關聯案件#
→ 1977-John-Backus與FORTRAN高階程式語言、1970-James-Wilkinson與向後誤差分析