我试图了解APL,J,K,这有点令人沮丧,因为:
我几乎觉得我正在盯着Common Lisp,Guile,Gambit,Chicken,SBCL--当我真正想要的是看两页计划评估员。
因此,我的问题是:是否有一篇简短的(约50页)文件讨论了APL / J / K的核心,即:
谢谢!
我认为你已经落后于“J似乎没有...”,所以我不知道你是否已经找到了我将要链接的所有内容并且正在解雇它们。
我的背景是广泛的语言范例的粉丝,而APL / J / Q / K集,我选择花大部分时间使用J.那说,鉴于J是由与APL成名的Ken Iverson一样,事实证明,大部分同样的想法都在其中。我甚至发现,在应用了非常简单的音译努力之后,关于APL的旧论文似乎适用于J.
低级参考
最好的低级J引用(在解析,评估,语法甚至内部数据结构原语的层面上)是一组HTML文件,它们带有J的开源分发。
您可以在线浏览:here。
更高级别的介绍
This blog post实际上是一个关于J思考事物的方式的一个非常好的速成课程。
除此之外,我发现在jsoftware.com上有两本书特别为J编程提供了很好的介绍:
J编程语言核心的“经典”陈述是词典。我认为它是为该语言发布的最早的文档的一部分,但是今天使用的版本一直保持最新。
在网络上,可以在以下目录的第三列中找到词典:http://www.jsoftware.com/help/dictionary/contents.htm
同一文档作为该语言的标准软件安装的一部分安装。帮助系统将允许您访问该本地副本,或者您可以使用OS文件系统直接访问该文档。
什么都没有取代那些信息。这是关于J.的最权威的信息。
一个出色的文件是Ken Iverson的A Dictionary of APL。虽然它很短,但它不是一个很好的语言教程,但它是一个很好的参考。它是在J,A和K等后来的方言出现之前编写的,但它讨论了不同版本的APL2中的一些常见变体。
由于其悠久的历史,APL在风格和特异性方面经历了几个根本性的变化。
因此,APL上不应该因为不符合ASCII而过于强硬,因为它早于ascii将近十年。它早于信息交换标准代码的概念。不同的机器不同。这是50年代。
当60年代到来时,艾弗森和工作人员在IBM工作,可以投入一些特殊的硬件和制造来实现所需的特殊字符(IBM本身甚至不是“ascii”城镇,但使用了多种EBCDIC代码)。
APL最初被称为“艾弗森符号”。 Ken Iverson将其创建为一种工具,用于以可由计算机执行的形式表达代数语句。作为符号的第一个用途之一是IBM System \ 360的规范。
对于解析模型,给定大量原始函数,APL设计者决定严格的左右优先级以避免混淆。在开发APL时,其他编程语言具有算术层次结构,例如在添加之前发生乘法,不需要括号。在APL上强加这样的层次结构会使其无法使用。从右到左优先级有两个例外:数组索引和括号的使用。
APL的语法是为了保持一致性而设计的。用户定义的函数以与基元相同的方式获取参数,并使用相同的右到左层次结构进行求值。