代码之家  ›  专栏  ›  技术社区  ›  hatmatrix

J的一些独特之处是什么?

  •  4
  • hatmatrix  · 技术社区  · 16 年前

    我的背景是C、Fortran、Python、R、Matlab和一些Lisp—我读过一些关于Haskell的东西。APL家族的J语言或其他语言中有哪些独特的、没有用更通用的语言实现的简洁的想法/例子?我总是想找出我错过了什么。。。

    3 回复  |  直到 16 年前
        1
  •  6
  •   estanford    16 年前

    J有一个非常大的操作符集,可以很容易地生成复杂的程序,而不必寻找库。它有非常强大的数组处理能力,以及迭代构造,使得显式控制结构与大多数目的无关——以至于我更喜欢使用张量代数而不是声明显式循环,因为它更方便。J在解释器中运行,但是一个好的J脚本可以和用编译语言编写的程序一样快(当执行显式循环时,解释器不必每次执行时都编译循环的内容。)

    J的另一个有趣的特性是默契编程。您可以在不显式引用输入变量的情况下构建脚本,这样您就可以纯粹根据您的意图来表达想法。例如,我可以将平均值函数定义为“将列表中的项相加,然后除以列表中的条目数”,如下所示:

    (+/ % #)

    或者我可以制作一个脚本,将数据切片到一个二维数组中,只返回平均值大于10的行的平均值:

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

    你可以用J做很多其他的事情;它是一种数学符号的可执行形式。思想很容易概括,所以你可以从学习语言的任何一个方面得到很多好处。

        2
  •  5
  •   Jörg W Mittag    16 年前

    远程 主流。

    嗯。J主流?嗯,是的,和 其他 不是冯·诺依曼的语言!只有 非冯诺依曼语言开始,大多数只生活在一些博士论文,从来没有真正实现和那些 实现的用户基数通常为1,如果是这样的话。一般来说,如果至少有一个用户没有和发明它的人坐在同一层楼里,他们就被认为是成功的。

    相比 ,日本 主流。特别是,J是基于约翰·巴克斯(JohnBackus)在其开创性的图灵奖演讲中的FP 编程能从冯·诺依曼风格中解放出来吗?

        3
  •  2
  •   MPelletier    16 年前

    假设您需要存储一个号码:

    var1 =: 10
    

    var2 =: 4 8 15 16 23 42
    

    完成。哦,但是等等,你需要把它除以3.7?不用费心选角,只管去做:

    var2 % 3.7
    

    推荐文章