我知道这三个都是相关的,我已经看到很多在Project Euler中用J语言解决问题的答案,也看到一些用K语言的。我想知道的是,你会建议学习哪种语言,并且你会建议从哪里获取学习材料?
我知道这三个都是相关的,我已经看到很多在Project Euler中用J语言解决问题的答案,也看到一些用K语言的。我想知道的是,你会建议学习哪种语言,并且你会建议从哪里获取学习材料?
APL
APL是由Kenneth Iverson创建的原始数组编程语言。它使用非ASCII字符集,因为没有保留字。 英国APL协会 维护了一个最新的解释器列表(包括免费和商业版本),以及下面涵盖的受APL启发的语言的信息。
A+
A+是Arthur Whitney作为APL后续版本创建的。源代码可在GPL下获得,并带有XEmacs扩展。从网站下载。
J
J由Kenneth Iverson和Roger Hui创建,只需要ASCII字符。源代码曾经要花钱购买,但最近已在GPL下发布。从网站下载。
K
K是另一种Arthur Whitney语言,也使用ASCII字符。支持它的公司已经停用了这种语言,但有开源的Kona。
Q
建立在K之上,包括类似SQL的查询/连接功能(表是内置容器),该语言建立在处理大量数据的基础上。可以从网站下载非商业许可版本。
至于目前活跃使用的语言,Q在金融领域相当流行,而J在学术界和爱好者中得到了一些支持。这两种语言是目前进行数组编程的最佳选择。
考虑到各种语言的特性和材料的可用性,我会选择 J 语言。
目前的 J 解释器不是开源的,但语言规范是公开的。因此,如果官方 J 解释器不再免费,一个开源项目可以实现它。
K 看起来已经死了,被 Q 取代。所有的许可证都是专有的,而且解释器似乎更难找到(因为他们正在销售 kdb,而不是 Q)。
我找不到可用的 APL 版本。
有一个名为NAS2000的免费APL解释器,但我发现它只适用于概念证明。有时候我会得到错误的结果(我曾经在从8K IBM 1130到PC/XT的所有设备上编写过APL程序,有时我认为结果是错误的),而其他时候则非常缓慢。在J中,最好的情况是它运行得像任何东西一样快。我从未使用过K,我尝试在J中解决了大约100个欧拉问题,并且现在才开始真正理解排名。(其中大约有10个是用D完成的,一个是用Lisp完成的,支持计算是用J完成的,还有一个是用整数线性规划包完成的,但当我发现它不会给我正确的答案时,我就放弃了它,转而使用D编码约束条件)。
J本质上是一种数学语言,非常适合大多数欧拉问题,所以只需专注于解决这些问题,需要时查找jsoftware.com网站即可,这是您可以做的最好的事情。