代码之家  ›  专栏  ›  技术社区  ›  James Fassett

scala vs.groovy vs.clojure[关闭]

  •  676
  • James Fassett  · 技术社区  · 16 年前

    有人能解释一下scala、groovy和clojure之间的主要区别吗?我知道这些编译器中的每一个都可以在JVM上运行,但是我希望对它们进行简单的比较。

    6 回复  |  直到 9 年前
        1
  •  874
  •   Enno Shioji    10 年前

    Groovy 是一种动态类型的语言,其语法与Java非常接近,具有许多语法改进,允许更轻的代码和更少的样板。它可以运行一个解释器和编译,这使得它有利于快速原型,脚本和学习动态语言,而不必学习一个新的语法(假设你知道Java)。从groovy 2.0开始,它对 static compilation . groovy支持闭包,并以某种功能性的方式支持编程,尽管它与传统的功能性编程定义相差甚远。

    Clojure 是Lisp的一种方言,具有一些高级功能,如 Software Transactional Memory . 如果您喜欢Lisp并且希望在JVM下使用它,Clojure就是为您准备的。这可能是最 functional language 在JVM上运行,当然是最著名的。而且,它更强调 immutability 与其他Lisp方言相比,Lisp方言更接近功能语言爱好者的核心。

    Scala 是一种完全面向对象的语言,比Java更先进,是最先进的语言之一。 type systems 可用于非研究语言,当然是JVM上最先进的类型系统。它还结合了功能语言的许多概念和特征,在不影响对象定向的前提下,对功能语言特征的折衷使功能语言的一些狂热者望而却步。

    groovy在Grails中具有良好的接受度和流行的Web框架。它还支持Gradle构建系统,这正成为Maven的流行替代方案。我个人认为它是一种实用性有限的语言,特别是当Jython和JRuby开始在JVM领域取得进展时,与其他语言相比。

    Clojure,即使是对一些非常有趣的特性进行折扣,也仅仅通过在JVM上使用Lisp方言就具有很强的吸引力。当然,它可能会限制它的受欢迎程度,但我希望它会在很长一段时间内拥有忠诚的社区。

    Scala可以直接与Java竞争,并在几乎所有方面为其提供资金。当然,它目前无法在人气上竞争,缺乏强有力的企业支持可能会阻碍它在企业环境中的接受。在语言发展的意义上,它也是一种比Java更具活力的语言。从语言的角度来看,这是件好事。从计划在其中编写数千行代码的用户的角度来看,并非如此。

    作为最后一个披露,我非常熟悉斯卡拉,只熟悉其他两个。

        2
  •  219
  •   kiritsuku    13 年前

    斯卡拉

    scala是从一种称为 Funnel 它代表了几乎所有Java语法的一个无尘室实现,只有在可以做出明显改进的地方,或者它会损害语言的功能性质。这种差异包括单例对象而不是静态方法,以及类型推断。

    其中很大一部分是基于马丁·奥德斯基之前在 Pizza 语言。OO/FP集成远远超出了闭包的范围,并导致将该语言描述为后功能语言。

    尽管如此,它在很多方面与Java最接近。主要是由于OO支持和静态类型的结合,而且由于语言设计中的明确目标,它应该与Java非常紧密地集成。

    格罗维

    Groovy明确地处理了两个Java最大的批评

    • 动态类型化,这会删除大量样板文件和
    • 向语言添加闭包。

    也许是 句法上 与Java最接近,不提供Culjress和Scala提供的一些更丰富的功能结构,但仍然提供了明确的进化改进——尤其是编写脚本Syle程序。

    groovy拥有三种语言中最强大的商业支持,主要是通过SpringSource。

    克洛杰尔

    Clojure是Lisp家族中的一种功能语言,它也是动态类型的。

    诸如stm支持之类的特性为它提供了一些开箱即用的最佳并发支持,而scala需要第三方库,例如 Akka 复制这个。

    从语法上讲,它也是典型Java代码中三种语言中最远的。

    我还得透露我最熟悉斯卡拉:)

        3
  •  68
  •   Stéphane Bruckert jungledev    9 年前

    我从来没有时间和Clojure玩过。但是对于scala和groovy来说,这是来自james strachan的话-groovy的创造者

    尽管我的建议是长期替换javac是scala。 我对它印象深刻!老实说,如果有人给我看 Martin Odersky,Lex Spoon&Bill在Scala Book中的编程 早在2003年,我可能就没有创建过groovy。”

    你可以读完整个故事 here

        4
  •  30
  •   Anthony    16 年前

    它们可以区别于它们来自何处,或者主要针对哪些开发人员。

    Groovy 有点像Java的脚本版本。长期以来,Java程序员在构建由大型架构支持的敏捷应用程序时会感到宾至如归。顾名思义,Grails上的groovy类似于Rails框架。对于那些不想一直困扰Java的人来说。

    Scala 是一种面向对象的函数式编程语言,Ruby或Python程序员可能会觉得更接近这一语言。它使用了在这些编程语言中发现的许多常见的好主意。

    Clojure 是Lisp编程语言的方言,因此Lisp、Scheme或Haskell开发人员在使用该语言进行开发时可能会感到宾至如归。

        5
  •  8
  •   Jim Collings    13 年前

    我正在阅读实用程序员的书“Groovy配方:润滑Java的车轮”的Scott Davis,版权2008,并于同年四月打印。

    这有点过时了,但这本书清楚地说明Groovy简直就是Java的扩展。我可以编写Java代码,它的功能与Java完全一样,并重命名文件*.Groovy,它工作正常。根据这本书的说法,如果我包括必要的图书馆,情况就会相反。到目前为止,实验似乎证明了这一点。

        6
  •  4
  •   Community CDub    8 年前

    显然,语法完全不同(Groovy最接近Java),但我想这不是你要的。

    如果您有兴趣使用它们来编写Java应用程序,那么斯卡拉可能不是一个好的选择,因为 no easy way to evaluate 它来自Java,而Groovy特别适合于此目的。

    推荐文章