APL,J,K的核心

时间:2012-05-07 17:37:26

标签: j apl k

我正在努力了解APL,J,K,而且它有点令人沮丧,因为:

  • 大多数书籍都是关于APL的,但很少有APL实现,而且我没有奇怪的键盘。

  • K似乎已被Q

  • 取代
  • J似乎没有

我几乎觉得我正在盯着Common Lisp,Guile,Gambit,Chicken,SBCL--当我真正想要的是看两页方案评估员。

因此,我的问题是:是否有一篇简短的(约50页)文件讨论了APL / J / K的核心,即:

  • 其评估模型

  • 其解析模型(因为左/右优先级似乎很重要)

  • 其语法

谢谢!

4 个答案:

答案 0 :(得分:3)

我认为你已经落后于“J似乎没有...”,所以我不知道你是否已经找到了我将要链接的所有内容并且正在解雇它们上方。

我的背景是广泛的语言范式的粉丝,以及APL / J / Q / K集,我选择花大部分时间使用J.那说,鉴于J是由APL成名的Ken Iverson开发,事实证明,大部分同样的想法都在其中。我甚至发现,在应用了非常简单的音译努力之后,关于APL的旧论文似乎适用于J.

低级别参考

最好的低级J引用(在解析,评估,语法甚至内部数据结构原语的层面上)是一组HTML文件,它们带有J的开源分发。

您可以在线浏览:here

更高级别的介绍

This blog post实际上是关于J思考事物的方式的一个非常好的速成课程。

除此之外,我发现jsoftware.com上有两本书特别为J编程提供了很好的介绍:

  1. Learning J(更短)
  2. J for C Programmers(更长)

答案 1 :(得分:2)

J编程语言核心的“经典”陈述是词典。我认为它是为该语言发布的最早的文档的一部分,但是今天使用的版本一直保持最新。

在网络上,可以在以下目录的第三列中找到词典:http://www.jsoftware.com/help/dictionary/contents.htm

同一文档作为该语言的标准软件安装的一部分安装。帮助系统将允许您访问该本地副本,或者您可以使用OS文件系统直接访问该文档。

没有任何东西取代那些信息。这是关于J的最明确的信息。

答案 2 :(得分:1)

Ken Iverson撰写的优秀文件A Dictionary of APL。虽然它很短,但它不是一个很好的语言教程,但它 是一个很好的参考。它是在J,A和K等后来的方言出现之前编写的,但它讨论了不同版本的APL2中的一些常见变体。

由于历史悠久,APL在风格和特异性方面经历了几次根本性的变化。

  • 20世纪50年代后期:它是一种“黑板”语言,用于简洁地描述算法并在人类之间准确地传达意义。
  • 20世纪60年代早期:它是一种算法设计语言。用于编写高级算法,然后需要将其“手动编译”为任何可用的机器语言。
  • 20世纪60年代末:早期在计算机上实施。
  • 20世纪70年代初:重新设计和重新实现为APL2。
  • 20世纪70年代后期:像Nial这样的相关语言,越来越多的“方言”。
  • 20世纪80年代初:前面提到的 APL 词典,试图总结和解释APL2和方言中的完整概念网络。
  • 1980s:J和K等

所以,APL不应该因为不符合ASCII而太难,因为它早于ascii差不多十年了。它早于信息交换标准代码的概念。不同的机器不同。这是50年代。

当60年代到来时,艾弗森和工作人员在IBM工作,可以投入一些特殊的硬件和制造来实现所需的特殊字符(IBM本身甚至不是“ascii”城镇,但使用了几种EBCDIC码)。

答案 3 :(得分:0)

APL最初称为“艾弗森符号”。肯·艾弗森(Ken Iverson)将其创建为一种以可以由计算机执行的形式表达代数陈述的工具。最早使用的符号之一是对IBM System \ 360的规范。

对于解析模型,鉴于大量原始函数,APL设计人员决定采用严格的从右到左优先级来避免混淆。在开发APL时,其他编程语言都具有算术层次结构,例如在不需要加括号的情况下进行乘法。在APL上强加这样的层次结构将使其无法使用。从右到左的优先级有两个例外:数组索引和括号的使用。

APL的语法旨在保持一致性。用户定义的函数采用与原始函数相同的方式接受参数,并以从右到左的相同层次结构进行评估。