阵列景观虽然令人着迷,但却无休止。是否有理由选择J或K或APL或A之一?这些选项似乎都没有开源 - 是否有开源版本?我会喜欢扩大的思想,但我仍然感到困惑。

有帮助吗?

解决方案

这些语言之间的差异相对微妙。 APL“正确”具有原始符号符号的优点和缺点。 (多年来,对符号设定的符号已经进行了微小的变化,但它们对原始愿景足够真实。)

A+语言可用开源。它与“经典” APL显着背道而驰,但就像它们保持大多数核心角色集合一样。我的感觉是,它尚未与技术变化保持最新状态。它是K.

阵列语言家族中的语言已经脱离了独特的APL字符集,包括J,K和Nial。 Nial使用英语单词代替符号,并具有一个称为Q'nial的开源解释器。 K和J主要依靠符号,但这些符号是从ASCII字符集中绘制的。但是,仅通过分配定义,就可以用这些语言中的符号来代替这些语言。

自1964年APL作为IBM产品以来,APL的编程语言家族主要是专有的。专有阵列语言似乎比目前有更多的支持和更快的新功能发展速度。我不确定所有竞争对手如何相互竞争,但是Dyalog APL肯定一直在积极促进他们作为当前技术的实施。 APL2000为UNIX,Linux和Windows提供产品,包括.NET的VisualApl。 Microapl Ltd提供APLX。

K是一种不再自行销售的专业语言。 KX Systems是在销售KDB+数据库及其Q(查询)语言,两者都在K中编写。这是一种功能强大的专业工具,旨在高速处理流数据。它与原始APL方法显着不同。 KX Systems产品价格昂贵,其用户主要在金融上工作。

APL设想,主要由Ken Iverson设计。在将APL应用于商业应用程序中的全部职业生涯之后,他转向了进行“合理化”修订的任务,该修订纠正了他多年来发现自己不满意的语言的各个方面。这个主题的新鲜事物称为J。J和APL之间的差异是在J软件Wiki的论文中勾勒出来的。一个明显的变化是消除数组索引语法。不过,最大的功能是隐性形式,其中通过编写功能而无需参考其参数而编写程序。 TACIT J与功能编程语言中的“无点”样式密切相关,但是这种形式的不同之处在于该形式对J语言至关重要。与更独特的APL字符相比,J中使用的基于ASCII的符号可能更难读取。

对于想要学习数组语言的个人,我的建议是在Dyalog APL,APLX,J和Q'nial中进行选择。 Dyalog APL(尤其是Windows)或APLX(尤其是Linux)可能是想要使用APL如此独特并且想要与整个APL社区有牢固联系的核心象征主义的人。 J可能是那些想要构建Web应用程序的人,或者专注于数学(例如Project Euler),尤其是那些对那些强调的默许风格着迷的人。 Q'nial是我选择的,如果我的优先级是开源的,但前提是优先事项也不意味着期望有活跃的操作系统社区的支持。


更新:J 7.01已经 用开源代码发布 在GPL 3下 科纳, ,一个K上的变体。这些增加了开源阵列语言的选项。

Tobia的更新: gnu apl 在GPL下可用。它遵循有关扩展APL语言的最新发布的ISO标准。它是一个很好的开源APL实施,并且正在积极开发和维护。例如,还有其他有趣的实现 ngn apl, 这是一个令人惊讶的功能齐全且现代的APL,用咖啡本编写的APL(将其编写为JavaScript。)阵列语言在2015年还活着。

其他提示

添加更多信息...

有一个开源版本的 KKona https://github.com/kevinlawler/kona

为了 q/kdb+, ,有一个试用版。 http://kx.com/download/

主要限制是2小时的超时,32位内存,3个月许可到期和许可证本身。如果您只想玩耍并学习一些东西,这些都不应该很麻烦。

我个人发现 q 自KX自KX翻译了Monadic(单个参数)动词以来,这是最友好的 K 用英语单词,并且有大量的文档 @ http://code.kx.com. 。此外,数据库系统经过深思熟虑且灵活。

要考虑的是操作员的词汇(高阶功能)。

原始APL仅具有最后一个轴和第一轴(f/, f⌿),最后和第一轴累积减少(f\, f⍀),加上内部和外部产品(f.g, ∘.g).

最扩展的APL(例如GNU APL,APLX,APL+WIN,APL2)仅添加每个环()和轴支架规范(f[...]).

J,添加了一个 过多 (称为副词和连词),但删除了括号(轴和索引),每个操作员(有利于更通用的等级运算符)和最后轴(累积)还原。

现在已停用的尖锐APL(SAX)保留了传统的最后一轴操作员和括号索引,同时添加了许多J的新运营商。

Dyalog APL正在逐渐接近Sharp APL的词汇量,但还合并了J-Septrusive Operators,这些操作员从未将其变成锋利的APL。

下表比较J,Sharp APL和Dyalog APL组成词汇。灰色的条目正在提议中。J, Sharp APL, and Dyalog APL compositions

J是一种可执行的数学符号,使用ASCII字符输入和显示。

它也是一种完全露出的功能,面向对象的编程语言。

J的JSoftware实现J(我不知道其他任何)不是开源的,但可以免费使用。

尽管引擎不是开源的,但有一个主动用户库J代码可以为其贡献。

J有广泛而简洁的文档 http://www.jsoftware.com/help.htm 论坛成员快乐,快速地回答任何问题或问题,并渴望帮助新用户成为定向以及更高级的问题。

顺便说一句,在开源问题上,J的文档(规范)是广泛的,理论上任何人都可以创建一个开源项目来尝试实现J。

埃利 是一种新开发的,免费的,跨平台,数组编程语言。与J和K相似,它依赖于ASCII字符集。它实现了K/Q/KDB+唯一的某些功能,例如时间数据类型和内置SQL子集。

尽管A+似乎(可悲的是)是一个死亡的项目,但有一个新的开源APL解释器: gnu apl.

我也保持困惑(APL一直困扰着我 - 幸运的是,自上次尝试使用它已经20年或更长时间了),但是一些搜索发现了A+,这是A::

我不知道它将满足您(或任何人)的需求。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top