APL 程式語言原始碼 (2012)

APL 程式語言原始碼 (2012)

Hacker News·大約 13 小時前

電腦歷史博物館發布了 APL 程式語言的歷史原始碼,這是一種由肯尼斯·艾佛森發明的革命性陣列導向符號系統,它從最初的數學標記法演變成一個功能強大的互動式程式設計環境。

背景

電腦歷史博物館於 2012 年公開了 APL 語言在 1969 年至 1972 年間的 XM6 版本原始碼。這款由哈佛教授 Kenneth E. Iverson 最初於 1957 年設計的語言,起初並非為了電腦編程,而是一種用於描述演算法的數學記號。隨著 IBM 在 System/360 大型主機上推出 APL\360,它不僅成為一種強調陣列處理的革命性語言,更提供了一個完整的互動式編程環境,深刻影響了後世對運算與符號系統的理解。

社群觀點

在 Hacker News 的討論中,APL 被視為一種極具魔力的語言,其獨特的符號系統與思維方式讓許多資深開發者記憶猶新。有評論者指出,APL 就像是非程式設計師眼中對「編程」的想像:一種結合異國符號與複雜儀式的巫術,能憑空創造出數據與演算法。這種將「記號作為思考工具」的設計哲學,讓 APL 與 LISP 一樣成為永恆的經典,每一代程式員在重新發現它時,往往都會對運算、邏輯與語言的本質感到震撼。

對於曾深入學習 APL 的使用者來說,這門語言具有強烈的「洗腦」效果。一位開發者分享,APL 是他學習的第一門語言,當時他對其中的細節近乎著迷,以至於後來轉向程序型語言時,花了將近一個月才讓大腦適應那種截然不同的邏輯。這種對陣列處理的極致追求,在實務應用中展現了驚人的效率。例如有留言提到,在 1990 年代中期,曾見識過專家在類似 Jupyter Notebook 的互動視窗中,僅用一行公式就處理完複雜的金融風險數據集。

儘管 APL 的符號鍵盤與輸入方式在現代看來極為特殊,但在 1970 年代末期,仍有許多工程師與學者對其愛不釋手。當時的硬體環境甚至需要特製的鍵盤,將 APL 符號直接刻印在鍵帽上。然而,這種高度抽象且密集的表達方式也帶來了學習門檻,正如 Iverson 本人所言,掌握這種具備強大描述力的語言需要付出相當大的努力。

此外,社群中也有人深入挖掘了本次公開的原始碼細節。一位讀者注意到程式碼中關於隨機數生成的實作,發現其採用了 1966 年 ACM 論文中提到的 Lehmer 演算法。這種對歷史細節的考據,不僅展現了早期軟體工程的嚴謹性,也連結了 APL 語言中 ROLL 函數的演進史,為這份古老的原始碼增添了技術考古的趣味。

延伸閱讀

在討論中,參與者推薦了幾項深入了解 APL 的資源。首先是 Ken Iverson 於 1979 年獲得圖靈獎時的演講稿《Notation as a Tool for Thought》,這被認為是理解 APL 設計哲學的必讀文獻。其次,Alan Kay 關於 APL 革命性影響的評論也值得參考。對於希望實際體驗 APL 的讀者,Jürgen Winkelmann 在蘇黎世聯邦理工學院所做的努力,已將這些原始碼轉化為可在現代環境運行的系統。此外,關於 APL 隨機數生成函數 ROLL 的歷史背景,在 Jsoftware 網站上也有詳盡的紀錄。

https://computerhistory.org/blog/the-apl-programming-language-source-code/