APL、A、J、K?

2024-02-04

数组语言的景观虽然令人着迷,但也令人困惑不已。有理由选择 J 或 K 或 APL 或 A 之一吗?这些选项似乎都不是开源的——有开源版本吗?我很想拓展我的思维,但我仍然感到困惑。


这些语言之间的差异相对微妙。 APL“正确”具有原始符号表示法的优点和缺点。 (多年来,符号集发生了一些细微的变化,但它们都足够真实地符合最初的愿景。)

A+ 语言是开源的。它与“经典”APL 有很大不同,但在保留大部分核心字符集方面与它们相似。我的感觉是它没有跟上技术变化的步伐。它是K的前身。

数组语言家族中脱离了独特的 APL 字符集的语言包括 J、K 和 Nial。 Nial 使用英文单词而不是符号,并且有一个名为 Q'Nial 的开源解释器。 K 和 J 主要依赖于符号,但这些符号是从 ASCII 字符集中提取的。然而,只需指定定义即可使用单词代替这些语言中的符号。

The APL family of programming languages have been primarily proprietary since the initial appearance of APL as an IBM product in 1964. Proprietary array languages seem to have more support and faster evolution of new capabilities than open source alternatives at this time. I'm not sure how all the competitors stack up against one another, but Dyalog APL has certainly been working actively to promote their implementation of the language as current technology. APL2000 offers products for Unix, Linux, and Windows, including VisualAPL for .Net (retired). MicroAPL Ltd offers APLX (retired).

K 是一种专门的语言,不再单独销售。 Kx Systems 正在营销 Kdb+ 数据库及其 Q(查询)语言,两者都是用 K 编写的。它是一个强大的专用工具,专为高速处理流数据而设计。它与最初的 APL 方法有很大不同。 Kx Systems 产品价格昂贵,其用户大多从事金融工作。

APL 是由 Ken Iverson 设想和主要设计的。在完成了在商业应用中应用和完善 APL 的整个职业生涯后,他开始着手进行“合理化”修订,纠正了多年来他发现自己不满意的语言方面。这个新的主题被称为 J。J 和 APL 之间的区别在 J Software wiki 上的一篇论文中进行了概述。一个值得注意的变化是取消了数组索引语法。不过,最大的特征是默认形式,其中程序是通过组合函数而不参考其参数来编写的。 Tacit J 与函数式编程语言中的“无点”风格密切相关,但不同之处在于这种形式是 J 语言的基础。 J 中使用的基于 ASCII 的符号可能比更独特的 APL 字符更难阅读。

对于想要学习数组语言的个人,我的建议是选择 Dyalog APL、APLX、J 和 Q'Nial。 Dyalog APL(尤其是 Windows)或 APLX(尤其是 Linux)可能最适合那些想要使用 APL 独特的核心符号以及想要与整个 APL 社区建立牢固联系的人。 J 可能最适合那些想要构建 Web 应用程序或专注于数学(如 Project Euler)的人,尤其是那些对其所强调的默认风格着迷的人。如果我的优先事项是开源,那么我会选择 Q'Nial,但前提是该优先事项并不意味着需要活跃操作系统社区的支持。


更新:J 7.01 已以开源代码发布 https://github.com/jsoftware根据 GPL 3。此外还有Kona https://github.com/kevinlawler/kona,K 的变体。这些增加了开源数组语言的选项。

托比亚更新:GNU APL https://www.gnu.org/software/apl/可在 GPL 下使用。它严格遵循最新发布的扩展 APL 语言的 ISO 标准。它是一个出色的开源 APL 实现,并且正在积极开发和维护。还有其他有趣的实现,例如ngn/APL https://gitlab.com/n9n/apl,这是一个用 CoffeeScript(可编译为 JavaScript)编写的 APL 的令人惊讶的功能齐全且现代的实现。数组语言在 2015 年仍然活跃。

亚当更新:许志强 https://en.wikipedia.org/wiki/Roger_HuiJ 的主要实现者和设计者之一,此后加入了 Dyalog,在他的指导下,Dyalog APL 添加了许多受 J 启发的功能。这包括默认的函数式编程风格以及一些运算符和函数,其中许多在此过程中得到了改进。 Dyalog APL 现已免费供非商业用途。此外,还出现了一些新的 APL 实现;看aplwiki.com https://aplwiki.com。数组语言在 2020 年依然活跃。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APL、A、J、K? 的相关文章

  • HTML5(六)preserve and recover

    HTML5 六 preserve and recover 1 save the state of canvas context 2 So we have two method to save and restore the state of
  • 一个例子告诉你什么是封装,继承和多态(C++ 代码实例) (一)

    add by WJB date 2018 08 30 面向对象的三大特性 封装 继承和多态 封装 将事物拥有的属性和动作隐藏起来 只保留特定的方法与外界联系 继承 子类可以拥有父类的属性和方法 多态 以说是 一个接口 多种实现 或者说是父类
  • java常见笔试题目

    1 下列那一行代码编译后不会出现警告或错误 1 char c a 2 byte b 257 3 boolean b null 4 int i 10 5 float f 1 3 2 下面这段代码编译时会发生什么情况 public class
  • 自制Web桌面日历

    想要一个带农历的桌面日历 google了半天也没有找到中意的 但是经常浏览网站的时候发现很多不错的日历 直接保存到我的桌面上不就完了吗 下面是具体操作 将中意的日历页面 查看源文件 看是否可以看到script文件 如果可以 就保存到本地 用
  • xml 文档树

    xml 文档树 XML documents form a tree structure that starts at the root and branches to the leaves XML 文档树起始于 根元素 并以此为基础扩展文档
  • 不仅仅好看!30个优秀logo的设计思想分析

    拥有一个抢眼的Logo对企业来乃一大幸事 毕竟Logo千千万 但真正让人过目不忘的作品可是屈指可数 好的Logo必须量体裁衣 迅速传递出企业的价值和理念 本文里精选了30个经典的标志设计 并附上设计思想分析 相信会对你受益匪浅 Castle
  • 51信用卡管家app产品需求文档

    文章通过使用 体验 研究等方式倒推51信用卡管家APP 通过使用axure撰写PRD文档 51信用卡业务很多 文章只撰写部分核心功能点 另外 51信用卡通过和第三方合作 开展了账单导入 办信用卡 借款 投资理财等业务 文中如有相关错误 望指
  • 求数组中连续n个元素使其和最大

    给定一个数组 求出数组中连续的一些元素使其和的值最大 如果所有元素都为正数 显然整个数组即为所求的 如果所有元素的值为负数 则所求的最大值为0 这是在编程珠玑上看到的 其时间复杂度由O n3 减为O n 了 public class Max
  • 开始做一个平台程序

    先赚个积分吧 公司的项目 从0开始
  • 修改数组的一行

    我刚刚开始学习J 有些东西我不知道如何正确做 例如 假设我想打印 2 个符号的棋盘 baba abab baba 为此 我假设您可以生成一个数组 baba baba baba 并反转第二行 生成数组很简单 3 4 ba 但倒车第二排是我挣扎
  • 有APL的开源实现吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么 VS 2008 不支持 J#,这种语言已经死了吗?

    MS 放弃 J 了吗 目前我们通过 J 程序集与软件集成 有谁知道2010年是否会得到支持 这是回答您问题的链接 http social msdn microsoft com Forums en US visualjsharpgeneral
  • FoldList 类似于 J 中的原语

    Mathematica 有一个内置函数 称为FoldList FoldList函数说明 http reference wolfram com mathematica ref FoldList html J中有类似的原语动词吗 我知道 J 有
  • 在 SQL 中,如何生成 5!56 的每种可能的唯一组合?

    我有一个表 元素 其中有一列 数字 类型为 SMALLINT 其中包含数字 1 到 56 如何使用 SQL 语句生成从 1 到 56 的每种可能组合的 5 个数字的唯一集合 在 APL 编程语言 中 一个简单的二元函数 5 56 就可以解决
  • APL、A、J、K?

    数组语言的景观虽然令人着迷 但也令人困惑不已 有理由选择 J 或 K 或 APL 或 A 之一吗 这些选项似乎都不是开源的 有开源版本吗 我很想拓展我的思维 但我仍然感到困惑 这些语言之间的差异相对微妙 APL 正确 具有原始符号表示法的优
  • 如何在 Excel 宏中使用 JavaScript?

    Google 托管了一个非常酷的 diff 类 http code google com p google diff match patch http code google com p google diff match patch 我之
  • J:牛顿法的隐性副词

    我发现在 addons math misc brent ijs 布伦特方法作为副词的实现 我也想构建牛顿法作为副词 但这比构建默认动词要困难得多 这是牛顿迭代的显式版本 newton i 1 u u d 1 有了这样的用法 2 o newt
  • 如何在 APL 中将数字拆分为数字

    在 APL 中 如何将整数或数字拆分为包含其数字的向量 最简洁 最短 的方法是什么 您可以使用反函数Decode以 10 为底 10 1 since Decode将接收所需数量的数字并对其进行解码 其逆函数将接收一个数字并将其编码为所需数量
  • KDB 反向 asof join (aj) 即在下一个引用而不是上一个引用

    aj time sym trade quote 将每笔交易与之前的报价值相结合 我想做同样的连接 但是是在下一个引用值而不是前一个值上 我怎样才能实现这个目标 定义以下函数 k ajr Q ft d x z j 1
  • 比较 .NET 中的两个字节数组

    我怎样才能快速做到这一点 当然我可以这样做 static bool ByteArrayCompare byte a1 byte a2 if a1 Length a2 Length return false for int i 0 i

随机推荐

  • UICollectionView 和 SwiftUI?

    如何使用 SwiftUI 创建方形项目网格 例如在 iOS 照片库中 我尝试了这种方法 但它不起作用 var body some View List cellModels in Color orange frame width 100 he
  • 并排均匀打印 2 个均匀填充的列表

    我使用以下代码生成 2 个列表 nameList 和gradeList nameList gradeList for row in soup find all tr name row select th strong grade row s
  • Eclipse 问题 - 启动错误:无法连接到远程虚拟机。连接超时

    我收到消息 启动错误 无法连接到远程虚拟机 连接超时 每次我在读取设备上调试我的应用程序时 我在 AndroidManifest 中添加了
  • 如何通过 Go SDK 流式传输 Docker 容器日志

    我正在为 Go 中的一些游戏服务器软件编写一个工具 名为sampctl https github com Southclaws sampctl主要功能是为服务器实例启动 Docker 容器 然后捕获从容器中发出的日志 稍微清理一下并将它们发
  • iOS7 标签栏图标太大

    似乎我在处理像图标这样简单的事情时遇到了困难 我正在构建一个仅适用于 iOS7 的应用程序 因此设备是视网膜显示屏 不包括 iPad 2 所以我为我的标签栏制作了一些 60 x 60 的图标 然而这些太大了 而且 30 x 30 有点像素化
  • 从自定义 SurfaceView 获取位图

    我在一个扩展表面视图并实现可运行的类中有这段代码 我能够使用该类基本上允许您使用不同的颜色等绘制到画布上 我正在尝试找到一种方法 该方法允许我在绘制图像后保存图像 这就是方法 无论我做什么 我都会得到一张没有任何内容的黑色图像 有任何想法吗
  • Java - 字符缓冲区问题

    我有一个 1 99 GB 的字符文件 现在 我想从该文件中随机提取数百万个子序列 例如从位置 90 到 190 10 到 110 50000 到 50100 等 每个子序列长 100 个字符 我通常使用 FileChannel channe
  • 如何使用多线程进行zlib压缩(相同输入源)

    我的目标是在并行线程中压缩同一源的数据 我已经定义了列表中的作业 这些作业具有读取信息 每个作业中 500kb 1MB 我的压缩器线程将使用 ZLIB 压缩每个块的数据并将其存储在相应作业的 outbuf 中 现在 我想合并所有这些并创建一
  • 如何检测用户是否在浏览器中启用了全屏

    当用户在 Chrome 或 FireFox 中启用全屏时 是否会触发一些 JavaScript 事件 我有 WebGL 应用程序 画布宽度和高度设置为一定大小 当用户启用全屏时 我想调整其大小 如果没有这样的事件 我是否应该开始研究用画布填
  • 如何在 PyQt5 中使用全局键盘快捷键显示 QMenu?

    我试图通过热键 例如 F1 显示 QMenu 实例PyQt5 然后我找到了这个包keyboard https pypi org project keyboard 尝试像这样使用它 keyboard add hotkey F1 self sh
  • 将 HTML 表转换为 JSON

    我正在尝试将通过 BeautifulSoup 提取的表转换为 JSON 到目前为止 我已经成功隔离了所有行 但我不确定如何使用这里的数据 任何建议将非常感激 tr td strong Balance strong td td strong
  • WP8.1后退按钮退出应用程序

    上次我针对 Windows Phone 进行开发时使用的是版本 8 现在我正在使用 8 1 也许这是微软的一项新功能 但是当我按下手机上的后退按钮时 无论我对应用程序的了解有多深 应用程序都会最小化 这真的很烦人 有什么我可以做的吗 提前谢
  • 自动填充子图

    我正在编写一个 python 脚本 该脚本将 1 获取每个子图的 y 值列表 以针对一组通用的 x 值进行绘制 2 将每个子图设为散点图并放置将其放置在子图网格中的适当位置 并且 3 针对不同大小的子图网格完成这些任务 第三个语句的意思是
  • 我是否需要更改 xml 代码以支持所有屏幕尺寸的 Android 设备?

    我已经为不同的屏幕尺寸创建了布局 这是我的默认布局的 xml 代码 但所以任何人请告诉我应该做什么来支持任何屏幕尺寸的 Android 设备的布局 我需要更改我的 xml 代码吗 或者 只是我需要修改我的xml代码吗 请告诉我 以便我解决我
  • Python 2.7 的 Shebang 线

    我已经在我的Linux Centos中安装了Python2 7 它默认安装了Python2 6 默认Python root linuxhost PythonProjects python V Python 2 6 6 默认Python2 7
  • 错误:找不到字段的设置器。 - java.util.ArrayList 中的大小 - Room 中的嵌入式 ArrayList 无法编译

    我在将 Android 4 1 2 更新到 4 2 2 后收到此错误消息 但在将 Android Studio 更新到 4 1 2 以上的任何版本后收到此错误消息 What went wrong Execution failed for t
  • 如果模型实现了 INotifyPropertyChanged,ViewModel 应该如何注册/取消注册 PropertyChanged 事件?

    我有一个实现的模型INotifyPropertyChanged并且它可能会被后台业务线程更新 其相关ViewModel也实现了INotifyPropertyChanged 他们的 View 显然绑定到 ViewModel 该视图可能会显示在
  • 合并两个数据框,两者的坐标都基于最近的位置

    我有一个包含局部变量的大型数据框 约 130000 行 和另一个包含物种密度的大型数据框 约 7000 行 两者都有 x 和 y 坐标 但这些坐标并不总是匹配 例如 df1 lt data frame X c 2 4 1 2 5 Y c 6
  • Django Rest Framework - 注册后返回用户 ID 和令牌

    我尝试注册用户并返回令牌和用户 ID 像这样做 from django shortcuts import render from rest framework response import Response from rest frame
  • APL、A、J、K?

    数组语言的景观虽然令人着迷 但也令人困惑不已 有理由选择 J 或 K 或 APL 或 A 之一吗 这些选项似乎都不是开源的 有开源版本吗 我很想拓展我的思维 但我仍然感到困惑 这些语言之间的差异相对微妙 APL 正确 具有原始符号表示法的优