現代化 APL 精通之路

數十年來,APL(A Programming Language)在計算領域佔有獨特的地位。它以極度簡潔的語法和專用字元集聞名,這種語言不僅提供不同的語法——更提供一種全新的資料思考方式。對於想踏入此領域的人而言,書籍 Mastering Dyalog APL 長期以來一直是金標準。

然而,隨著語言的演進以及我們學習軟體的方式改變,印刷書籍的靜態特性可能成為瓶頸。Dyalog 正在透過將經典教材重新製作成現代、互動的格式來解決此問題。

「Mastering Dyalog APL」的演變

Mastering Dyalog APL 的第一版由 Bernard Legrand 於 2009 年撰寫,為該語言提供了完整的基礎。但此後多年,Dyalog APL 已顯著演進,已升至 12.0 版。為確保學習材料保持時效性,正在進行一次全新改寫,由 Rodrigo Girão Serrão 領導。

此專案不僅是簡單的文字更新,而是朝向更具互動性的教學方式前進。新版本使用 Jupyter Notebooks 建置,讓學生在閱讀概念的同時即可在即時環境中實驗程式碼。對於像 APL 這樣的語言而言,此轉變至關重要,因為學習曲線很大程度上涉及對其獨特符號的肌肉記憶建立。

對於偏好不同格式的使用者,專案持續提供多種存取途徑:

  • 互動式: 透過 GitHub 的 Jupyter Notebooks。
  • 靜態: 專屬的線上版本,方便快速瀏覽。
  • 印刷版: 實體書籍,適合偏好紙本的讀者。
  • PDF: 可下載的版本,供離線學習使用。

今日學習 APL 的觀點

雖然更新後的指南提供了結構化的學習路徑,社群對 APL 的討論卻顯示出語言威力與其在現代產業實務應用之間的複雜關係。

「腦部重塑」效應

許多開發者將 APL 視為一種心智練習,而非日常生產工具。此語言迫使使用者轉向陣列導向的思考方式,即使程式設計師最終回到較主流的語言,這種思維仍相當寶貴。一位使用者指出,將 APL 程式翻譯成 NumPy 往往能揭示語言的底層邏輯,儘管他提醒說,APL 最著名的一行程式碼往往更像是「解謎」而非演算法效能的最佳化。

例如,經典的 APL 質數產生式 (2=+⌿0=∘.|⍨⍳N)/⍳N 雖然簡潔驚人,但在 NumPy 的翻譯中顯示,它本質上是一個 $N^2$ 的除數計算,而非高度最佳化的篩法。這凸顯了 APL 中一貫的主題:極端簡潔與原始效能之間的取捨。

現代學習策略

除了正式的書籍之外,學習者也透過結合大型語言模型(LLM)與競賽程式平台取得成功。一位開發者分享了使用 Claude 從現有 Emacs 模式中抽取功能,並在 Kattis 上解題以獲得「多巴胺刺激」與快速重複的經驗。這種方法——從簡單問題開始,並利用 AI 解釋語言的細節——比傳統教科書學習更能快速上手。

生態系統與批評者

儘管具備智識上的吸引力,APL 仍因可及性受到批評。社群中一個重要的爭議點是 Dyalog 編譯器的商業性質。批評者認為,在開源主導的時代,利基語言應該免費且開放,以促進採用,並建議將編譯器整合至 GCC 或 LLVM 等專案,以確保其存續。

對於尋求類似陣列導向範式,但希望採用更現代或開源方式的使用者,已出現如 Uiua 等替代方案,承諾提供更佳的人機工程學以及針對音訊與影片渲染的專門功能。

結論

Mastering Dyalog APL 現代化的努力不僅是文件的更新,更是為了讓這門具挑戰性且具影響力的語言在現代教育環境中保持活力。無論是用於專業的金融建模,或作為「腦部重塑」的手段,APL 仍是陣列計算威力的引人入勝的研究對象。

Sources