Scala、Groovy和Clojure的比较 [翻译]

本文是Stack Overflow上的问题Scala vs. Groovy vs. Clojure [closed]
高票回答的翻译


Scala vs. Groovy vs. Clojure(Scala、Groovy和Clojure的比较)

Groovy is a dynamically typed language, whose syntax is very close to Java, with a number of syntax improvements that allow for lighter code and less boilerplate. It can run through an interpreter as well as being compiled, which makes it good for fast prototyping, scripts, and learning dynamic languages without having to learn a new syntax (assuming you know Java). As of Groovy 2.0, it also has growing support for static compilation. Groovy supports closures and has support for programming in a somewhat functional style, although it's still fairly far from the traditional definition of functional programming.

Groovy是一种动态类型语言,其语法非常接近于Java。它提供大量的简洁语法,可以使代码更加轻量以及更少的样板代码(boilerplate)。Groovy代码既可以被编译,也可以直接在解释器上运行,这使得它非常适合用于快速原型设计、脚本以及学习动态语言,而不必学习新的语法(假设你知道Java)。到了Groovy 2.0,它开始支持静态编译(static compilation)。Groovy 支持闭包,并且也支持某种程度上的函数式编程,尽管它离传统意义的函数式编程还很远。

Clojure is a dialect of Lisp with a few advanced features like Software Transactional Memory. If you like Lisp and would like to use something like it under the JVM, Clojure is for you. It's possibly the most functional language running on the JVM, and certainly the most famous one. Also, it has a stronger emphasis on immutability than other Lisp dialects, which takes it closer to the heart of functional language enthusiasts.

Clojure是一种Lisp的方言,具有许多高级特性,如软件事务内存(Software Transactional Memory)。如果你喜欢Lisp语言,并且希望在Java虚拟机上使用它,那么Clojure非常适合你。它或许是JVM上最接近函数式编程的语言了,并且当然是最出名的一个。同时,它比其它的Lisp方言更加强调不变性(immutability),这使得Clojure更加受到函数式编程狂热者的青睐。

Scala is a fully object oriented language, more so than Java, with one of the most advanced type systems available on non-research languages, and certainly the most advanced type system on the JVM. It also combines many concepts and features of functional languages, without compromising the object orientation, but its compromise on functional language characteristics put off some enthusiasts of the latter.

Scala是纯粹的面向对象语言,这一点上更甚于Java。Scala具有非研究性语言(non-research languages)上最高级的类型系统之一,并且同时也是JVM上最高级的类型系统。它结合了函数式语言的许多概念和特征,同时仍保持了面向对象的特性。但是因为Scala没有完全实现函数式语言,所以它在函数式编程的狂热者心中排名不高。

Groovy has good acceptance and a popular web framework in Grails. It also powers the Gradle build system, which is becoming a popular alternative to Maven. I personally think it is a language with limited utility, particularly as Jython and JRuby start making inroads on the JVM-land, compared to the others.

Groovy的接受度很高,并且它实现了Grails这个受欢迎的Web框架。它同时也是Gradle这个的构建工具(很有可能代替Maven)的实现语言。但是我个人认为它的效用和其他语言相比是有限的,特别是在如今Jython和JRuby在JVM领域大行其道的时候。

Clojure, even discounting some very interesting features, has a strong appeal just by being a Lisp dialect on JVM. It might limit its popularity, granted, but I expect it will have loyal community around it for a long time.

Clojure,尽管砍掉了一些很有趣的特性,但是因为作为可在JVM上运行的Lisp方言,仍然具有较强的吸引力。这或许限制了它的普及,但就算如此,我认为它依然能够存在很长时间。

Scala can compete directly with Java, and give it a run for its money on almost all aspects. It can't compete in popularity at the moment, of course, and the lack of a strong corporate backing may hinder its acceptance on corporate environments. It's also a much more dynamic language than Java, in the sense of how the language evolves. From the perspective of the language, that's a good thing. From the perspective of users who plan on having thousands of lines of code written in it, not so.

Scala能直接和Java竞争,并且在几乎所有方面都可以媲美(译注:"What does 'Give someone a run for their money' mean?"If you can give someone a run for the money, you are as good, or nearly as good, as they are at something.)。但是同时在受众程度上稍微逊色一点,并且由于缺乏强有力的企业支持,在企业环境中尚不能完全推广。从语言的设计上来看,比起Java,Scala是一种更加动态的语言。从语言本身的观点来看这是件好事。但是从用户的角度,尤其是那些计划用Scala来写成千上万行代码的用户来说,未必如此。

As a final disclosure, I'm very familiar with Scala, and only acquainted with the other two.
最后,对于我而言我更熟悉Scala,对其他两者只是略有耳闻。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容