戴克斯特拉論 APL 的一封信 (1982)
這篇文章呈現了戴克斯特拉於 1981 年撰寫的一封信,他在信中批評 APL 語言像是一種崇拜,且過度依賴硬體終端;隨後作者許國華對此提出反駁,並展示了 APL 在形式化數學推導上的強大優勢。
背景
這篇文章源於電腦科學先驅 Dijkstra 在 1982 年寫給 A. Caplin 博士的一封信,信中對 APL 語言及其擁護者提出了尖銳的批評。Dijkstra 認為 APL 像是一種「邪教」,其符號化的介面不僅難以透過紙筆傳播,更會形塑使用者的思維,使其過度依賴電腦終端機而失去純粹的邏輯推導能力。
社群觀點
Hacker News 的討論圍繞著 Dijkstra 的批評是否過時,以及 APL 這種陣列導向語言在現代的價值展開。部分留言者認為 Dijkstra 的觀點在今日看來依然精準,特別是他提到人們會因為對新奇工具的狂熱而容忍糟糕的介面,這點被類比到當今的生成式 AI 熱潮。反對者則認為 Dijkstra 對「介面」的定義過於狹隘,他偏好能用筆尖在紙上推導的簡潔性,卻忽略了電腦作為一種「元設備」可以突破打字機時代的符號限制。
關於 APL 著名的「難以閱讀」特性,社群中出現了兩極化的辯論。有曾任職於 APL 開發崗位的資深工程師自嘲該語言為「寫一次,讀不回」(WORN),認為過於密集的符號雖然能在一行內完成大量工作,卻讓後續維護成為噩夢。然而,也有支持者指出,這種「難讀」其實是源於對數學符號的不熟悉,而非語言本身的缺陷。他們認為 APL 的設計初衷是為了人與人之間的溝通,其符號系統在表達陣列運算時具有無與倫比的經濟性與一致性。
有趣的是,討論也觸及了 Dijkstra 對高階語言的態度。有觀點認為 Dijkstra 厭惡 APL 是因為其過於高階且難以追蹤,但隨即有反駁指出 Dijkstra 其實非常推崇 Haskell,這說明他並非反對高階抽象,而是反對缺乏嚴謹形式化基礎的工具。此外,社群也觀察到 APL 的影響力正以不同形式延續,例如現代的 Uiua 語言透過自動補全解決了輸入難題,而 APL 的陣列思維也深深影響了現代資料科學工具。
最後,針對 Dijkstra 在信末對收信人學位的質疑,留言者們對此表現出不同的解讀。有人認為這是典型的「Dijkstra 式毒舌」,反映了他傲慢且難以相處的一面;但也有人緩頰這可能只是當時學術圈特有的幽默感。無論如何,這封信再次證明了程式語言的選擇往往不僅是技術問題,更涉及了對思維方式與工具美學的哲學爭端。
延伸閱讀
在討論中被提及的相關資源包括:由 Rob Pike 開發、使用英文單字而非特殊符號的類 APL 工具 Ivy;強調陣列導向且對新手更友善的新興語言 Uiua;以及 Iverson 獲得圖靈獎時的演講稿《Notation as a Tool for Thought》,該文深入探討了符號系統如何輔助人類思考。此外,Bret Victor 的 Dynamicland 專案也被提及,作為一種跳脫傳統文本與紙筆限制的程式設計實驗。
相關文章