J的独特功能有哪些?

hat*_*rix 4 j apl tacit-programming

我来自C,Fortran,Python,R,Matlab和一些Lisp的背景 - 我在Haskell上读过一些东西.JL或APL家族其他语言中有哪些简洁的想法/例子是独特的,而不是用更常见的语言实现的?我总是有兴趣找出我所缺少的东西......

est*_*ord 6

J拥有大量的运算符,可以轻松编写复杂的程序,而无需寻找库.它具有非常强大的阵列处理能力,以及反复的结构,使不相干对于大多数用途明确的控制结构 - 以至于我更喜欢​​用张量代数来声明一个明确的循环,因为它更方便.J在解释器中运行,但是一个好的J脚本可以和用编译器语言编写的程序一样快.(当你取出显式循环时,解释器不必在每次执行时编译循环的内容.)

J的另一个有趣特征是默认编程.您可以在不明确引用输入变量的情况下构建脚本,这样您就可以纯粹根据要执行的操作来表达一个想法.例如,我可以将平均函数定义为"对列表中的项进行求和并将它们除以列表中的条目数",如下所示:

(+/ % #)

或者我可以创建一个切入2D数组的脚本,只返回平均值大于10的行的平均值:

(10&<#])(+/%#)"1

你可以用J做很多其他整洁的东西; 它是数学符号的可执行形式.思想很容易概括,因此您可以从学习语言的任何一个方面获得很多好处.


Jör*_*tag 5

我认为J最有趣的一个方面是它是极少数非远程主流的非冯 - 诺依曼语言之一.

嗯.J主流?嗯,是的,与其他非冯 - 诺依曼语言相比,它是!目前只有极少数非冯·诺依曼语言,首先,那些最只能住一些博士论文中并没有真正实施,那些实现的,如果连通常具有1的用户群.通常,如果至少一个用户不与发明它的人坐在同一楼层,则认为它们是成功的.

比起那个,J 主流.特别是,J是基于John Backus的FP,他的开创性图灵奖演讲" 可以从冯·诺依曼风格中解放出来的节目? "而AFAIK是唯一可行的实施方案.(例如,我不认为Backus实际上实现了FP.)

  • J中的默认风格(我认为是什么使它成为非冯 - 诺依曼语)和Haskell中的无点风格,Icon和Factor等堆栈语言或Unix shell命令的管道之间有什么区别?还有许多其他语言,命名变量被认为是坏样式. (2认同)