【问题标题】:Core of APL, J, KAPL、J、K 的核心
【发布时间】:2012-05-07 17:37:26
【问题描述】:

我正在尝试理解 APL、J、K,这有点令人沮丧,因为:

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

  • K 似乎已被 Q 取代

  • J好像没有

我几乎感觉自己在盯着 Common Lisp、Guile、Gambit、Chicken、SBCL ——当我真正想要的是看到一个方案评估器的两页时。

因此,我的问题是:是否有一个简短的(比如约 50 页)文档来讨论 APL/J/K 的核心,例如:

  • 其评估模型

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

  • 它的语法

谢谢!

【问题讨论】:

  • 你那句“J 好像没有”好像没有后半句。

标签: j apl k


【解决方案1】:

我认为您在“J 似乎没有...”上有所拖后腿,所以我不知道您是否已经找到了我要链接的所有内容并正在忽略它们以上。

我的背景是一组非常广泛的语言范式和 APL/J/Q/K 集的粉丝,我选择将大部分时间都花在使用 J 上。也就是说,鉴于 J 是由同一个 APL 成名的 Ken Iverson 开发,事实证明其中有很多相同的想法。我什至发现,在应用了非常简单的音译工作后,关于 APL 的旧论文似乎也适用于 J。

低级参考

最好的低级 J 参考(在解析、评估、语法甚至其内部数据结构原语的级别)是一组随 J 的开源分发提供的 HTML 文件。

您可以在线浏览:here

更高级别的介绍内容

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

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

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

【讨论】:

【解决方案2】:

J 编程语言核心的“经典”语句是字典。我认为它是针对该语言发布的最古老文档的一部分,但今天使用的版本已保持最新。

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

在该语言的标准软件安装过程中安装了相同的文档。帮助系统将允许您访问该本地副本,或者您可以使用操作系统文件系统直接访问该文档。

没有什么可以取代该信息。这是关于J的最权威的信息。

【讨论】:

  • 就信息的准确性和权威性而言,我同意。我认为公平地说,对于许多语言新手来说,它不是最容易获得的文档,但对于问题中提出的信息类型,它可能是最好的资源。
【解决方案3】:

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

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

  • 1950 年代后期:它是一种“黑板”语言,用于简明地描述算法并在人类之间准确地传达含义。
  • 1960 年代初期:它是一种算法设计语言。用于组合高级算法,然后需要将其“手动编译”成任何可用的机器语言。
  • 1960 年代后期:计算机上的早期实施。
  • 1970 年代初期:重新设计并重新实现为 APL2。
  • 1970 年代后期:Nial 等相关语言,越来越多的“方言”。
  • 1980 年代初期:上述APL 词典 试图总结和解释 APL2 和方言中的完整概念网络。
  • 1980 年代:J 和 K 等

因此,不应该因为不符合 ASCII 而对 APL 过于苛刻,因为它比 ascii 早了将近十年。它早于信息交换标准代码的想法。不同的机器是不同的。那是 50 年代。

当 60 年代开始时,艾弗森和工作人员受雇于 IBM,他们可以投入一些特殊的硬件和制造来实现所需的特殊字符(IBM 本身当时还不是一个“ascii”小镇,而是使用了几种 EBCDIC代码)。

【讨论】:

    【解决方案4】:

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

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

    APL 的语法是为了一致性而设计的。用户定义的函数采用与原语相同的方式接受参数,并使用相同的从右到左的层次结构进行评估。

    【讨论】:

      猜你喜欢
      • 2010-12-02
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多