跳轉到

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 的論證結構:

  1. 好記號使常見操作簡短(降低認知負荷)
  2. 簡短使代數恆等式可見(如 +/⍳n = (n×n+1)÷2 一眼可驗)
  3. 恆等式引導等價變換 → 演算法改進

這與 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與向後誤差分析