这些语言之间的差异相对微妙。 APL“正确”具有原始符号表示法的优点和缺点。 (多年来,符号集发生了一些细微的变化,但它们都足够真实地符合最初的愿景。)
A+ 语言是开源的。它与“经典”APL 有很大不同,但在保留大部分核心字符集方面与它们相似。我的感觉是它没有跟上技术变化的步伐。它是K的前身。
数组语言家族中脱离了独特的 APL 字符集的语言包括 J、K 和 Nial。 Nial 使用英文单词而不是符号,并且有一个名为 Q'Nial 的开源解释器。 K 和 J 主要依赖于符号,但这些符号是从 ASCII 字符集中提取的。然而,只需指定定义即可使用单词代替这些语言中的符号。
The APL family of programming languages have been primarily proprietary since the initial appearance of APL as an IBM product in 1964. Proprietary array languages seem to have more support and faster evolution of new capabilities than open source alternatives at this time. I'm not sure how all the competitors stack up against one another, but Dyalog APL has certainly been working actively to promote their implementation of the language as current technology. APL2000 offers products for Unix, Linux, and Windows, including VisualAPL for .Net (retired). MicroAPL Ltd offers APLX (retired).
K 是一种专门的语言,不再单独销售。 Kx Systems 正在营销 Kdb+ 数据库及其 Q(查询)语言,两者都是用 K 编写的。它是一个强大的专用工具,专为高速处理流数据而设计。它与最初的 APL 方法有很大不同。 Kx Systems 产品价格昂贵,其用户大多从事金融工作。
APL 是由 Ken Iverson 设想和主要设计的。在完成了在商业应用中应用和完善 APL 的整个职业生涯后,他开始着手进行“合理化”修订,纠正了多年来他发现自己不满意的语言方面。这个新的主题被称为 J。J 和 APL 之间的区别在 J Software wiki 上的一篇论文中进行了概述。一个值得注意的变化是取消了数组索引语法。不过,最大的特征是默认形式,其中程序是通过组合函数而不参考其参数来编写的。 Tacit J 与函数式编程语言中的“无点”风格密切相关,但不同之处在于这种形式是 J 语言的基础。 J 中使用的基于 ASCII 的符号可能比更独特的 APL 字符更难阅读。
对于想要学习数组语言的个人,我的建议是选择 Dyalog APL、APLX、J 和 Q'Nial。 Dyalog APL(尤其是 Windows)或 APLX(尤其是 Linux)可能最适合那些想要使用 APL 独特的核心符号以及想要与整个 APL 社区建立牢固联系的人。 J 可能最适合那些想要构建 Web 应用程序或专注于数学(如 Project Euler)的人,尤其是那些对其所强调的默认风格着迷的人。如果我的优先事项是开源,那么我会选择 Q'Nial,但前提是该优先事项并不意味着需要活跃操作系统社区的支持。
更新:J 7.01 已以开源代码发布 https://github.com/jsoftware根据 GPL 3。此外还有Kona https://github.com/kevinlawler/kona,K 的变体。这些增加了开源数组语言的选项。
托比亚更新:GNU APL https://www.gnu.org/software/apl/可在 GPL 下使用。它严格遵循最新发布的扩展 APL 语言的 ISO 标准。它是一个出色的开源 APL 实现,并且正在积极开发和维护。还有其他有趣的实现,例如ngn/APL https://gitlab.com/n9n/apl,这是一个用 CoffeeScript(可编译为 JavaScript)编写的 APL 的令人惊讶的功能齐全且现代的实现。数组语言在 2015 年仍然活跃。
亚当更新:许志强 https://en.wikipedia.org/wiki/Roger_HuiJ 的主要实现者和设计者之一,此后加入了 Dyalog,在他的指导下,Dyalog APL 添加了许多受 J 启发的功能。这包括默认的函数式编程风格以及一些运算符和函数,其中许多在此过程中得到了改进。 Dyalog APL 现已免费供非商业用途。此外,还出现了一些新的 APL 实现;看aplwiki.com https://aplwiki.com。数组语言在 2020 年依然活跃。