Java以外,選擇Scala仍是Groovy?

去年早些時候,一篇名爲「Scala,Groovy的殺手? 」的博客對Scala和Groovy進行了對比:算法

Scala和Groovy之間的核心區別在於前者是靜態類型的。有些人可能爭辯說這使得達到腳本化目標變得更加複雜了,而腳本化正是Groovy的動機。然而,Scala有完整的體系特徵,這使Groovy看上去更像個玩具。好比,Scala有「sequence comprehensions」。該要素致使對算法的表述很是緊湊和強大。框架

Scala還有更多被證實是很是有用的特性,如嵌套類,currying和代數類型模式匹配。它還支持相似於JDK1.5所增長的泛型和註解。這些還都只是冰山一角。

以後,Derek Young撰文「Scala對比Groovy:靜態類型是性能的關鍵」。在文中他舉了一個實際的例子,試圖說明針對一樣的算法,Scala的性能遠高於Groovy。工具

然而,Scala並非盡善盡美的,它也有一些明顯的缺陷。Rick Hightower在最近發表的一篇博客中,尖銳地批評了Scala的語法問題:性能

Scala並非更好的選擇。在閱讀了Scala的文檔以後,個人想法是:雖然這種語言的特性聽起來挺好,可是語法卻讓我想放棄。爲何事情非要爲了避免同而不一樣?Scala讓Groovy看起來比之前更加美味可口。學習

憎恨是個很強烈的詞。我恨Scala的語法。請不要再推動這種語法了。……Scala有好的思想嗎?有。借用過來就好了……spa

總而言之,Scala看起來像下一個被過分宣傳的語言。只須要把其精華引入到Groovy中,而後扔掉那些糟糕的語法。我最喜歡的Scala特性是推理類型和強類型。C#3.0也有這些。(我不用C#,不見得我不喜歡它的一些特性。)繼承

Rick Hightower還建議Sun應該在Groovy上進行投資,而不是對JRuby做無謂的投資。ci

Groovy更像Java,更容易上手,語法也讓開發者不反感。爲何Sun在JRuby上投那麼多錢呢?開發

投資應該給Groovy。這樣瞭解Java的開發者能夠更快地學習Groovy,並且若是有工具支持他們,那麼就更可能這樣作。文檔

爲了說明Sun投資在Ruby上的不明智,Rick Hightower還引用了一幅統計圖表來講明企業採用Ruby的趨勢仍是比較低的:

圖1

另外,不管是Ruby、Scala仍是Groovy都有對應的Web框架,且對應的框架都是用各自對應的語言編寫的。這些框架分別是Rails、Lift和Grails。儘管Lift和Grails中的許多東西都從Rails借鑑來的,可是Grails對其餘已有Java技術框架進行了很好的繼承,這無疑會保護用戶或廠商在這方面的已有投資。Grails框架參考文檔中這樣描述:

Grails構建在這些概念之上,而且顯著地減小了在Java平臺上構建Web應用的複雜程度。不一樣的是,這些是創建在已確立的如Spring和Hibernate這樣的Java技術之上的。

目前,Scala和Groovy兩種語言都在快速發展的過程當中。就目前的狀況來看,Groovy的優點在於易用性以及與Java無縫銜接,Scala的優點在於性能和一些高級特性,若是在發展過程當中二者能互相借鑑對方的優勢來充實自身,對開發者來說無疑是福音。正如第一篇所引用的博客做者最後提到的那樣:

你們並不想看到一場殊死鬥爭,而是想看到更注重實效思想的Groovy團隊能與更具備學術思想的Scala團隊一塊兒合做,製做出一門既強大又易用的語言。

你會將賭注押在誰身上呢?

相關文章
相關標籤/搜索