APL 是肯尼斯·艾佛森于20世纪60年代在 IBM 创造的数组编程语言,以一套独特的数学符号著称,一行代码即可完成复杂的矩阵运算。它开创了数组编程范式,直接影响了 J、K/q 以及 NumPy 等现代数组计算工具。

| 设计者 | 肯尼斯·艾佛森 |
| 开发机构 | IBM |
| 首次实现 | 1966年 |
| 编程范式 | 数组编程 |
| 后继语言 | J、K、q |
| 主要实现 | Dyalog APL、GNU APL |
APL(A Programming Language)是一种以数组为核心数据结构的编程语言,由加拿大裔计算机科学家肯尼斯·艾佛森(Kenneth Iverson)设计。它源于艾佛森1962年出版的同名著作中的数学记法,1966年在 IBM 实现为可运行的语言,是数组编程范式的开山之作。
艾佛森最初的目标是发明一套比传统数学记法更一致、更适合描述算法的符号体系,APL 因此使用了大量特殊字符(如 ⍴、⍳、⌽ 等),早期甚至需要专用键盘与打印球。在 APL 中,标量、向量、矩阵乃至高维数组都是一等公民,绝大多数运算符可以自动作用于整个数组,无需显式循环。艾佛森因这套记法与语言于1979年获得图灵奖,获奖演讲《记法作为思维工具》(Notation as a Tool of Thought)是计算机科学的经典文献。
APL 曾在保险精算、金融分析、统计与运筹等领域广泛应用,IBM 大型机上的许多分析系统以 APL 编写。它的思想催生了一整个语言家族:艾佛森后来与他人共同设计了改用 ASCII 字符的 J 语言;阿瑟·惠特尼(Arthur Whitney)创造的 K 与 q 语言驱动着金融业著名的 kdb+ 时序数据库;Python 的 NumPy、MATLAB 的矩阵运算乃至现代 GPU 张量计算,都能看到数组编程范式的影子。如今 Dyalog APL 等商业实现仍在维护,并有活跃的爱好者社区。
问:APL 的符号难认,为什么不改用普通字符?答:艾佛森认为精心设计的符号能提升思维效率,正如数学符号之于数学;不过其后继者 J 语言确实改用了 ASCII 字符以降低门槛。
问:今天还有人在生产环境用 APL 吗?答:有。部分金融与精算机构仍维护着 APL 系统,其近亲 q/kdb+ 更是高频交易领域的主流工具之一。
问:APL 对普通程序员有什么学习价值?答:它能训练用整体数组变换代替逐元素循环的思维方式,这正是写好 NumPy、Pandas 与 SQL 所需要的核心直觉。

| 设计者 | 肯尼斯·艾佛森 |
| 开发机构 | IBM |
| 首次实现 | 1966年 |
| 编程范式 | 数组编程 |
| 后继语言 | J、K、q |
| 主要实现 | Dyalog APL、GNU APL |
登录 后参与讨论
暂无讨论,来发表第一条评论吧