APL,J,K的核心

问题描述 投票:5回答:4

我试图了解APL,J,K,这有点令人沮丧,因为:

  • 大多数书籍都是关于APL的,但很少有APL实现,而且我没有奇怪的键盘。
  • K似乎已被Q取代
  • J似乎没有

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

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

  • 其评估模型
  • 它的解析模型(因为左/右优先级似乎很重要)
  • 它的语法

谢谢!

j apl k
4个回答
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(更长)

2
投票

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

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

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

什么都没有取代那些信息。这是关于J.的最权威的信息。


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和方言中的完整概念网络。
  • 20世纪80年代:J和K等

因此,APL上不应该因为不符合ASCII而过于强硬,因为它早于ascii将近十年。它早于信息交换标准代码的概念。不同的机器不同。这是50年代。

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


0
投票

APL最初被称为“艾弗森符号”。 Ken Iverson将其创建为一种工具,用于以可由计算机执行的形式表达代数语句。作为符号的第一个用途之一是IBM System \ 360的规范。

对于解析模型,给定大量原始函数,APL设计者决定严格的左右优先级以避免混淆。在开发APL时,其他编程语言具有算术层次结构,例如在添加之前发生乘法,不需要括号。在APL上强加这样的层次结构会使其无法使用。从右到左优先级有两个例外:数组索引和括号的使用。

APL的语法是为了保持一致性而设计的。用户定义的函数以与基元相同的方式获取参数,并使用相同的右到左层次结构进行求值。

© www.soinside.com 2019 - 2024. All rights reserved.