斯卡拉与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