数组语言环境虽然令人着迷,却令人困惑.是否有理由选择J或K或APL或A中的一个?这些选项似乎都不是开源的 - 是否有开源版本?我很想扩大我的想法,但我仍然感到困惑.
kal*_*dic 125
这些语言之间的差异相对微妙.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设想的,主要由Ken Iverson设计.在商业应用程序中应用和完善APL的全部职业生涯后,他转向了进行"合理化"修订的任务,这一修正案纠正了多年来他发现自己不满意的语言方面.这个主题的新鲜概念称为J. J和APL之间的差异在J Software wiki的论文中勾勒出来.一个明显的变化是消除了数组索引语法.然而,最大的特征是默认形式,其中程序是通过编写函数而不参考其参数来编写的.Tacit J与函数式编程语言中的"无点"风格密切相关,但不同之处在于这种形式是J语言的基础.
对于想要学习数组语言的个人,我的建议是在Dyalog APL,APLX,J和Q'Nial中进行选择.Dyalog APL(尤其适用于Windows)或APLX(尤其适用于Linux)可能最适合想要使用APL特有的核心符号的人,以及希望与整个APL社区建立强大联系的人.对于那些想要构建Web应用程序,或者专注于数学(如Project Euler)的人来说,J可能是最好的,特别是那些对它强调的默契风格着迷的人.如果我的优先权是开源的话,Q'Nial就是我所选择的,但只有当这个优先级并不意味着期望得到活跃的OS社区的支持时.
更新:J 7.01已经在GPL 3下发布了开源代码.此外还有Kona,K的变种.这些增加了开源数组语言的选项.
Tobia更新:GNU APL可在GPL下获得.它紧跟最新发布的关于扩展APL语言的ISO标准.它是一个很好的开源APL实现,正在积极开发和维护.还有其他一些有趣的实现,例如ngn APL,一个用Coffeescript编写的令人惊讶的功能和现代的APL实现(编译成Javascript.)数组语言在2015年还很活跃.
Yik*_* Lu 11
要添加更多信息......
有一个K名为https://github.com/kevinlawler/kona的开源版本Kona
对于q/kdb+,有一个试用版.http://kx.com/download/
主要限制是2小时超时,32位内存,3个月许可证到期以及许可证本身.如果你只是想玩游戏并学习一些东西,这些不应该太麻烦.
就个人而言,我发现q自从KX将monadic(单个参数)动词翻译K成英语单词后,用户最友好,并且有很多文档@ http://code.kx.com.此外,数据库系统经过深思熟虑和灵活处理.
要考虑的是运算符的词汇表(高阶函数).
原始APL仅具有最后和第一轴减少(f/,f?),最后和第一轴累积减少(f\,f?),以及内部和外部产品(f.g,?.g).
大多数扩展APL(例如GNU APL,APLX,APL + Win,APL2)仅添加每个循环(f¨)和轴括号规范(f[... ]).
J,添加了过多的(称为副词和连词),但删除了括号(轴和索引),每个运算符(有利于更一般的秩运算符)和最后轴(累积)减少.
现已解散的Sharp APL(SAX)保留了传统的最后轴运算符和括号索引,同时增加了许多J的新运营商.
Dyalog APL正在逐渐接近夏普APL的词汇,但也加入了J-exclusive运营商,这些运营商从未进入夏普APL.
下表比较了J,Sharp APL和Dyalog APL组成词汇表.灰色的条目正在提案中.
