hat*_*rix 4 j apl tacit-programming
我来自C,Fortran,Python,R,Matlab和一些Lisp的背景 - 我在Haskell上读过一些东西.JL或APL家族其他语言中有哪些简洁的想法/例子是独特的,而不是用更常见的语言实现的?我总是有兴趣找出我所缺少的东西......
J拥有大量的运算符,可以轻松编写复杂的程序,而无需寻找库.它具有非常强大的阵列处理能力,以及反复的结构,使不相干对于大多数用途明确的控制结构 - 以至于我更喜欢用张量代数来声明一个明确的循环,因为它更方便.J在解释器中运行,但是一个好的J脚本可以和用编译器语言编写的程序一样快.(当你取出显式循环时,解释器不必在每次执行时编译循环的内容.)
J的另一个有趣特征是默认编程.您可以在不明确引用输入变量的情况下构建脚本,这样您就可以纯粹根据要执行的操作来表达一个想法.例如,我可以将平均函数定义为"对列表中的项进行求和并将它们除以列表中的条目数",如下所示:
(+/ % #)
或者我可以创建一个切入2D数组的脚本,只返回平均值大于10的行的平均值:
(10&<#])(+/%#)"1
你可以用J做很多其他整洁的东西; 它是数学符号的可执行形式.思想很容易概括,因此您可以从学习语言的任何一个方面获得很多好处.
我认为J最有趣的一个方面是它是极少数非远程主流的非冯 - 诺依曼语言之一.
嗯.J主流?嗯,是的,与其他非冯 - 诺依曼语言相比,它是!目前只有极少数非冯·诺依曼语言,首先,那些最只能住一些博士论文中并没有真正实施,那些被实现的,如果连通常具有1的用户群.通常,如果至少一个用户不与发明它的人坐在同一楼层,则认为它们是成功的.
比起那个,J 是主流.特别是,J是基于John Backus的FP,他的开创性图灵奖演讲" 可以从冯·诺依曼风格中解放出来的节目? "而AFAIK是唯一可行的实施方案.(例如,我不认为Backus实际上实现了FP.)