Jam*_*ett 676 groovy scala language-comparisons clojure
有人可以解释Scala,Groovy和Clojure之间的主要区别.我知道这些编译中的每一个都在JVM上运行,但我想在它们之间进行简单的比较.
Dan*_*ral 873
Groovy是一种动态类型语言,其语法非常接近Java,并且有许多语法改进,允许更轻的代码和更少的样板.它可以通过解释器运行并进行编译,这使得快速原型设计,脚本和学习动态语言非常有用,而无需学习新语法(假设您了解Java).从Groovy 2.0开始,它对静态编译也有越来越多的支持.Groovy支持闭包,并且支持以某种功能性编程的编程,尽管它仍然远离传统的函数式编程定义.
Clojure是Lisp的一种方言,具有一些软件事务内存等高级功能.如果您喜欢Lisp并希望在JVM下使用类似的东西,那么Clojure就适合您.它可能是在JVM上运行的功能最强大的语言,当然也是最着名的语言.此外,它比其他Lisp方言更强调不变性,这使得它更接近功能语言爱好者的心脏.
斯卡拉是一个完全面向对象的语言,比Java更何况,用最先进的一个类型系统对非研究语言的版本,当然在JVM上最先进的类型系统.它还结合了功能语言的许多概念和功能,而不会影响面向对象,但它在功能语言特性上的妥协使后者的一些爱好者失去了兴趣.
Groovy在Grails中具有良好的接受度和流行的Web框架.它还支持Gradle构建系统,该系统正在成为Maven的流行替代品.我个人认为这是一种实用性有限的语言,特别是当Jython和JRuby开始在JVM-land上进行攻击时,与其他语言相比.
Clojure,甚至折扣了一些非常有趣的功能,只是在JVM上成为一个Lisp方言,具有很大的吸引力.这可能会限制它的受欢迎程度,但我希望它能在很长一段时间内拥有忠诚的社区.
Scala可以直接与Java竞争,并在几乎所有方面为其付出代价.当然,它目前无法在人气中竞争,缺乏强大的企业支持可能会阻碍其在企业环境中的接受度.从语言的演变来看,它也是一种比Java更具动态性的语言.从语言的角度来看,这是一件好事.从计划在其中编写数千行代码的用户的角度来看,并非如此.
作为最后的披露,我对Scala非常熟悉,并且只熟悉其他两个.
Kev*_*ght 219
Scala是一种名为Funnel的纯函数式语言,它代表了几乎所有Java语法的洁净室实现,只有在可以进行明显改进或者会损害语言功能性的地方才有所不同.这些差异包括单例对象而不是静态方法,以及类型推断.
其中大部分是基于Martin Odersky之前使用Pizza语言的工作.OO/FP集成远远超出了仅仅关闭,并导致语言被描述为后功能.
尽管如此,它在很多方面都与Java最为接近.主要是由于OO支持和静态类型的结合,而且由于语言设计中的明确目标,它应该与Java紧密集成.
Groovy明确地解决了Java中最受批评的两个问题
It's perhaps syntactically closest to Java, not offering some of the richer functional constructs that Clojure and Scala provide, but still offering a definite evolutionary improvement - especially for writing script-syle programs.
Groovy has the strongest commercial backing of the three languages, mostly via springsource.
Clojure is a functional language in the LISP family, it's also dynamically typed.
Features such as STM support give it some of the best out-of-the-box concurrency support, whereas Scala requires a 3rd-party library such as Akka to duplicate this.
Syntactically, it's also the furthest of the three languages from typical Java code.
I also have to disclose that I'm most acquainted with Scala :)
Tha*_*ran 68
我没有时间玩clojure.但对于scala vs groovy来说,这是来自James Strachan - Groovy创作者的话
"虽然我对scav的长期更换提示是scala.我对它印象非常深刻!我可以诚实地说,如果有人在2003年向我展示了Martin Odersky,Lex Spoon和Bill Venners的Scala编程书籍我可能从未创建过Groovy."
你可以在这里阅读整个故事
Meh*_*ran 30
它们可以与它们来自何处或主要针对哪些开发人员区分开来.
Groovy有点像Java的脚本版本.长期以来,Java程序员在构建由大型架构支持的敏捷应用程序时会有宾至如归的感觉.Grails上的Groovy,顾名思义与Rails框架类似.对于那些不想一直打扰Java冗长的人.
Scala是面向对象和函数式编程语言,Ruby或Python程序员可能会感觉更接近这一点.它采用了很多这些编程语言中常见的好主意.
Clojure是Lisp编程语言的一种方言,因此Lisp,Scheme或Haskell开发人员在使用这种语言进行开发时可能会有宾至如归的感觉.
小智 8
我正在阅读实用程序员的书"Groovy Recipes:Greasing the Java of Java",Scott Davis,版权所有2008,并于同年4月出版.
这有点过时了,但本书清楚地表明Groovy实际上是Java的扩展.我可以编写与Java完全相同的Java代码并重命名文件*.groovy并且工作正常.根据这本书,如果我包含必要的库,则反之亦然.到目前为止,实验似乎证实了这一点.
| 归档时间: |
|
| 查看次数: |
174905 次 |
| 最近记录: |