斯卡拉与Groovy与Clojure

有人可以解释一下Scala,Groovy和Clojure之间的主要区别。 我知道每个编译器都要在JVM上运行,但我希望能够在它们之间进行简单的比较。


Groovy是一种动态类型语言,其语法与Java非常接近,并且有许多语法改进,可以实现更轻的代码和更少的样板。 它可以通过解释器运行,也可以编译,这使得它不需要学习新的语法(假设你知道Java)就可以快速建立原型,脚本和学习动态语言。 从Groovy 2.0开始,它也越来越支持静态编译。 Groovy支持闭包,并支持编程功能,虽然它与传统的函数式编程定义相差甚远。

Clojure是Lisp的一种方言,具有软件事务内存等一些高级功能。 如果你喜欢Lisp并且想在JVM下使用类似的东西,Clojure会为你服务。 它可能是运行在JVM上的功能最强大的语言,当然也是最有名的语言。 此外,它比其他Lisp方言更强调不变性,这更接近功能性语言爱好者的心脏。

Scala是一种完全面向对象的语言,比Java更具有面向对象的特点,拥有非研究语言中最先进的类型系统之一,当然也是JVM上最先进的类型系统。 它还结合了许多功能语言的概念和特征,而不会影响对象的方向,但是它在功能语言特性上的妥协让后者的一些爱好者望而却步。

Groovy在Grails中拥有良好的接受度和流行的Web框架。 它还支持Gradle构建系统,该系统正在成为Maven的流行替代方案。 我个人认为这是一种功能有限的语言,尤其是Jython和JRuby开始在JVM-land上进行攻击时,与其他攻击者相比。

Clojure甚至会打折一些非常有趣的功能,只是在JVM上作为Lisp方言才有吸引力。 它可能会限制它的受欢迎程度,但我希望它能在很长一段时间内拥有忠实的社区。

Scala可以直接与Java展开竞争,并在几乎所有方面为其赚钱。 当然,它目前无法赢得人气,而缺乏强大的企业支持可能会阻碍其对企业环境的接受程度。 从语言演化的角度来看,它也是比Java更动态的语言。 从语言的角度来看,这是一件好事。 从计划写入数千行代码的用户角度来看,并非如此。

作为最终披露,我对斯卡拉非常熟悉,只知道其他两位。


斯卡拉

Scala从纯粹的函数式语言Funnel中演化而来,代表了几乎所有Java语法的洁净室实现,不同之处仅在于可以做出明显的改进或者会损害语言的功能性。 这种差异包括单身对象而不是静态方法,以及类型推断。

其中很大一部分是基于Martin Odersky之前的比萨语言工作。 OO / FP集成远远超出单纯的关闭,并导致语言被描述为后功能。

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

Groovy的

Groovy明确地解决了Java中两个最大的批评

  • 被动态地键入,这将删除大量的样板文件
  • 添加关闭语言。
  • 它可能在语法上离Java最近,并没有提供一些Clojure和Scala提供的更丰富的功能结构,但仍然提供了明确的进化改进 - 尤其是编写script-syle程序。

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

    Clojure的

    Clojure是LISP系列中的一种功能语言,它也是动态类型的。

    STM支持等特性为其提供了一些最佳的即用型并发支持,而Scala则需要第三方库(如Akka)来复制此类支持。

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

    我也必须透露我最熟悉斯卡拉:)


    我从来没有时间玩clojure。 但是对于scala和groovy,这是James Strachan的 - Groovy的创造者的话

    “尽管我的长期替代javac的提示是Scala,但我对它印象深刻!我可以诚实地说,如果有人在2003年向我展示了Martin Odersky,Lex Spoon和Bill Venners编写的Programming in Scala书籍, 'd可能从未创建过Groovy。“

    你可以在这里阅读整个故事

    链接地址: http://www.djcxy.com/p/33615.html

    上一篇: Scala vs. Groovy vs. Clojure

    下一篇: Skybox using OpenGL ES 2.0, Android NDK