迈向 APL 精通之路的现代化转型

几十年来,APL (A Programming Language) 在计算领域一直占据着独特的地位。它以极度的简洁性和使用专门的字符集而闻名,这不仅仅是一种提供不同语法的语言——它提供了一种看待数据的不同思维方式。对于那些想要进入这个世界的人来说,Mastering Dyalog APL 一直以来都是金标准。

然而,随着语言的演进以及我们学习软件的方式发生变化,印刷书籍的静态性质可能会成为瓶颈。Dyalog 目前正在通过将经典文本重新制作成现代、交互式的格式来解决这个问题。

"Mastering Dyalog APL" 的演进

由 Bernard Legrand 于 2009 年编写的 Mastering Dyalog APL 第一版为该语言提供了全面的基础。但在此后的几年里,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 中的一个反复出现的主题:极度简洁与原始性能之间的权衡。

现代学习策略

除了正式的书籍,学习者们正通过将 LLMs 与竞赛编程平台结合起来取得成功。一位开发者分享了他们使用 Claude 来提取现有 Emacs 模式的功能,并在 Kattis 上解决问题以获得“多巴胺冲击”并进行快速重复练习。这种方法——从简单问题开始,并使用 AI 来解释语言的细微差别——比传统的教科书学习提供了更快的上手速度。

生态系统及其批评者

尽管具有智力上的吸引力,APL 在可访问性方面面临着批评。社区中一个重大的争论点在于 Dyalog APL 编译器的商业性质。批评者认为,在开源主导的时代,一种小众语言应该免费且开放以鼓励采用,并建议编译器应该被集成到像 GCC 或 LLVM 等项目中,以确保其生存。

对于那些寻求类似面向数组的范式,但希望采用更现代或开源的方法的人来说,替代方案如 Uiua 已经出现,承诺提供更好的工程学体验,并为音频和视频渲染提供专门的设施。

结论

Mastering Dyalog APL 现代化转型的努力不仅仅是一次文档更新;它是一次尝试,旨在现代教育景观中让这种具有挑战性且具影响力的语言保持生命力。无论用于专业的金融建模,还是作为一种“重构大脑”的方式,APL 始终是面向数组计算能力的引人注目的研究对象。

Sources