为什么Clojure的比其他JVM的Lisp:川,武警熊或SISC?(Why Clojure ove

2019-07-17 18:34发布

在JVM已经有三个的Lisp的Clojure赶到现场之前: 川 , 武警熊和SISC 。

什么差距并不Clojure的填补,是由那些剩下的Lisp?

Answer 1:

川,ABCL和SISC是在齿相当长的现有语言的重新实现。 如果由于某种原因你想使用标准方案或标准的Common Lisp在JVM上,他们都非常优秀。

Clojure是一种新的语言。 它不会填补了一项空白 。 它增加了全新的可能性。 它有利于一个纯粹的功能approach-计划和CL都是多范式。 Clojure的各种FP语言的设计(ML,哈斯克尔)大量借鉴。

是的,你可以添加并发支持其他的Lisp,但是这完全是缺少了这一点。 Clojure的是从一开始就并发设计语言。 正因如此,编写并行程序是Clojure中微不足道的 - 不是火箭科学,因为它是在非功能性语言(方案,CL不排除)。 看这样子:

人们说C可以让你写在默认情况下的快速程序。

那么,Clojure的让你写在默认情况下并发程序。



Answer 2:

  1. “Clojure是不是向后兼容的限制Lisp的”(即从Clojure的网站的)。 这是一个全新的开始。 这是进步。 使用使Lisp语言/方案功能强大,但他们重新考虑Java 平台周围的想法。

  2. Clojure的永远是最新的Clojure。 随着移植到JVM任何其他语言的JVM版本可能总是在追赶。 如果你不需要的Java平台上的另一方案,为什么使用SISC? 如果这样做,为什么不使用一个Lisp语言(Clojure的),这是专门为它设计的?

  3. 设计时考虑并发。



Answer 3:

最简单的答案我可以想出是,Clojure是不常见的,Lisp的。 Clojure是不会被其他的Lisp的历史限制。 它是为JVM 建立了一个新的语言。



Answer 4:

我根本不知道这些的,这是Clojure的一个严重的利益(即人民作出足够的噪音,我发现)。 最重要的事情Clojure中有我没有看到你列出的是软件事务内存 。

Clojure的设计也为JVM,而并非是对另一种语言的一层,所以这是一个多一点的“Java-Y”,我想象别人的时候,你所要做的互操作将是。



Answer 5:

在clojure.org状态的理由页:

为什么我写的又一个编程语言? 基本上,因为我想:

  • 口齿不清
  • 函数式编程
  • 共生与已建立的平台
  • 专为并发

并且找不到一个。

你提到的(川,ABCL和SISC)的3种语言满足这些要求? 他们是:

  • 的Lisp(无论是CL或Scheme方言)✓
  • 函数式编程✓
  • 共生与已建立的平台(JVM)✓

但它们不是设计 (STM)并发; 然而,为了公平起见,完整,还有我发现CL尚未被提及的至少2个STM库:

  1. STMX
    • 测试在ABCL工作。 在积极发展。
  2. CL-STM
    • 死? 最后的变化是在2007年。

嗯......那么,为什么创建一个新的Lisp? 主要是因为这些都是 。 在clojure.org的理由页面继续(强调):

什么标准的Lisp(Common Lisp的和计划)?

  • 慢速/没有创新标准化后
  • 核心数据结构可变的,不可扩展
  • 在规格没有并发
  • 良好的实现已经存在的JVM(ABCL,川,SISC等)
  • 标准的Lisp是他们自己的平台

它是一种语言并行设计问题,正如其他人提及。

此外,为什么要停止在JVM? Clojure的CLR的支持正在积极开发中

这些都是2个缝隙填满,从我的角度。 是否符合您的需求,您应该使用Clojure的。 不要担心失去你的技能,如果Clojure的脱落地图。 您Lisp的技能,但更重要的是你的思维方式,将结转到其他的Lisp方言。



Answer 6:

如果我是愤世嫉俗,我会说这是因为Clojure的有一个更好的网站和一个性感的名字。



Answer 7:

我还要补充一点,Clojure是一个相对较新的语言,由一个人来实现,具有良好的营销技巧和大量的能量。 他投入了大量的时间和炒作进入Clojure的......有时,炒作是一个自我实现的预言,如果你能说服足够多的人,这是最新最伟大的事情,那么你就可以得到足够的支持和动力,使之能工作。

我怀疑川等的实施者不必在股份为多,因此没有大肆宣传他们的产品。 此外,那里的东西来炒作? “我们有一个伟大的语言..这就是所谓的Lisp”这是一个困难的营销卖。

我认为Java是一个很好的例子。 它有一些非常严重的缺陷,而是因为它是市场推广和炒作如此严重它实现了很多的势头,从硬件/软件供应商,工具生产商,行业投资等,无论哪种方式意味着支持下,取得了一定的成功,我虽然它讨厌编程。 Clojure的可能达到类似的成功,而其他的Lisp没有。



Answer 8:

Clojure中的好处是,它可以让你访问所有的Java库/代码在那里,因为它是基于JVM的多线程支持。 此外,它在设计时考虑到并发,东西不是一般的设计到口齿不清,虽然因为映射元的它可能不会是很难设计出一个能够支持并发性以及口齿不清。

话虽这么说,我想和Clojure的恨语法和对接的因素,这似乎与任何Java的连接到一起去的痛苦。



Answer 9:

Clojure是“口齿不清”,这是不是你已经知道任何口齿不清。 我花了几天阅读材料和观看视频,让我印象深刻。 它的前提是功能性程序(基于不可变的数据)来管理并发性的最佳途径。 Clojure的实现基于JVM的一个类Lisp系统来提供。



Answer 10:

我们不必多了一个答案(我不指望这一个票),但这里有一些小的改进等几个答案。

较新的不一定好。 较新的和设计不佳的并不好,更新,不维护不好,并没有较大的(或至少生长)的用户群体较新的是不好的。 (新语文定期出来,但大多落在由因废用的手下败将。)

我爱的Common Lisp。 它的美丽的部分是它的诡诈,它来自于一个事实,它的设计是由村委会与向后兼容性的几个不兼容方言的目标。

我爱方案。 这是一个美丽,优雅的语言。 然而,其发展依赖于委员会,或许已经放缓下来的时间。 在任何情况下,它的目标是从Clojure的不同。

Common Lisp的和计划有重点,如尾递归是没有得到很好的适合于效率的JVM。 Clojure中从一开始就设计很好地映射到JVM,并进行互操作(相当)与Java很好。 (我不知道这意味着什么有关Clojurescript和CLR方言。)

这Clojure的开发,最初,由一人,丰富希基,并通过他的小团队一起控制的事实,并不必然使它比委员会控制的语言更好。 如果有一个人做出了错误的决定,Clojure的不会是一个好的语言。

然而, 这是很重要的一点 :希基设计是经过深思熟虑的,优雅的语言,而且从一开始就包含的功能,这样更容易做了很多,从少系统的相关套件。 这也适用于基本的JVM的互操作以及语言的其他部分。 谁控制的Clojure的乡亲继续严格大约坚持了语言的目标,到目前为止。

这是一个什么我喜欢Clojure的一个重要组成部分:这是精心设计的既作为一个整体,并在其详细信息。 这意味着,一旦你习惯了它,它在它编程的乐趣。

它只会是言过其实(或understatment?)一点点地说,Clojure的有Common Lisp的与计划的优雅力量。 Common Lisp的有很多很多的东西,你需要内置到语言,但它是一个烂摊子(我说的是爱),当你需要的东西比什么是在语言更多,有时对于不同的权衡几个不兼容的库。 方案设计是小,虽然有可用的库。 Clojure的具有的语言的更多或更少的部件标准库(不像CL)的越来越多。 这方面的一个很好的例子是core.matrix项目,它提供一个公共接口到几个不同的矩阵实现。 这一点很重要,因为有不同的矩阵实现,最适合偶尔使用小矩阵,或者大量使用庞大矩阵,例如。

这一切都不是为了说Clojure是不是Common Lisp的或计划更好; 不是。 这三种语言有不同的美德。



Answer 11:

这是新的! 这意味着不是很多老lispers将使用它,因为传统的口齿不清社区是很好,传统的,但它也意味着人们以前没有口齿不清的经验将它捡起来作为新的东西。

恕我直言,Clojure是较旧的Lisp什么红宝石是Smalltalk的。 不一定好,但不够好。 而且重要的是,它更适用于您的雇主,因为它有动力,被认为是在上升,而语言,就像红宝石曾经是。



文章来源: Why Clojure over other JVM Lisps: Kawa, Armed Bear or SISC?