有没有用APL编写的开源项目?

15

我正在尝试学习 APL (Kona),并且正在寻找示例项目,以便了解有经验的 APL 程序员如何组织代码。

任何开源项目都会有所帮助,但是非金融或缺乏重度数学的项目将是最好的选择。


3
我认为 APL 的存在是专门用于重型数学的,例如一行代码实现埃拉托色尼筛法: (~R∊R∘.×R)/R←1↓⍳R - sarnold
2
这个问题不应该被关闭。虽然问题的措辞可能有些模糊,但是对于一门很难找到好资源的语言来说,答案非常棒。 - jdeseno
2个回答

14

我也一直在寻找,但还没有找到。APL是一种非常古老的语言;它完全先于整个开源运动。与同样古老的Lisp不同(其历史包括许多AI实验室研究和开放协作精神),APL的文化历史上与IBM、商业分时系统和金融相关联。不过,Kevin和我正在努力改变这一点,我们用Kona来实现。

no stinking loops有相当多的k代码。其中一些是为Kona所针对的不同版本的k编写的。Hakan Kjellerstrand也有一个非常好的K页面。

此外还有几本很棒的APL/J/K/Q书籍。我特别推荐Kenneth Iverson的A Programming Language,Henry Rich的J for C Programmers,Jeffry Borror的Q for Mortals(Q是Kx公司的最新版本K),以及Gilman & Rose的APL: An Interactive Approach。除了最后一本书之外,其他书籍都可以轻松在线获取。

请记住,许多人使用APL作为数学工具(如R、Mathematica、gnuplot等),而不是作为编程语言本身。(在我看来,J最适合这个。)K旨在成为更通用的程序设计语言,感觉像是APL、Lisp和C的综合体。尽管它属于这种语言家族中的异类。


感谢你的赞美之词,Scott。另一个关于(现代)APL 的优秀参考资料是Dyalog的《掌握Dyalog APL》。PDF版本可从http://www.dyalog.com/intro/下载。它当然有一些偏向于Dyalog系统,但是相当通用。 - hakank
7
不知何故,我忘记提及我的APL页面:http://hakank.org/apl/。它包含了更多的参考资料,例如一些关于APL的视频收藏。 - hakank
在Apter的网站上有一份旧的样式指南(http://nsl.com/papers/style.pdf)。据我所知,所有大型K项目都被锁在银行里。至今为止,没有开源的K项目。Kona是改变这种情况的机会。你可以做很多事情。一个memcached副本或者一个Redis副本都会很有趣。请参阅https://github.com/kevinlawler/kona/issues?labels=apps&sort=updated&direction=desc&state=open&page=1新的K项目将需要建立新的约定。 - kevinlawler

-12

如果你阅读this,你会发现Kona是“K编程语言(K3.2)的开源实现”。不幸的是,如果你访问K编程语言的创始人主页并查看产品,你会发现K似乎不受支持。

此外,从维基百科上看APL和K的文章,语法似乎相当复杂(例如x@>#:'x用于按字符串长度对字符串列表进行排序)!我建议学习汇编语言(通过nasm;最流行的汇编器之一)、C++、C,以及可能是Python,而不是APL或K(两者似乎都不受支持且未被使用)。


3
语法比它看起来的要简单得多,只有几个运算符,都是 "op a" 或者 "a op (b)" 的形式。就这样。x@>#:'x 表示 x[> #:' x],也就是 x[每个元素的长度从大到小排列后的索引],或者如你所说,"按字符串长度排序"。如果你想按照升序长度排序,可以使用 {x@<#:'x}。({} 是一个 lambda 函数,参数 x、y 和 z 都是隐式的。) - silentbicycle
2
虽然 K 有很强的 Lisp 风格,但大多数操作符助记符来自 C。 a&b 是 and/min,a | b 是 or/max,* a 是 first,等等。 - silentbicycle
1
K并不是不支持,只是在Kx产品网站上没有公开宣传。在该产品页面上提到的Kdb+和Q都是建立在K之上的(更准确地说是建立在K4,“版本4”的K之上)。每个Kdb+客户都可以完全访问K。 - earl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接