2014/9/29

Scala vs Groovy

當全世界都在走向 functional programming 的時候,身為一個傳統的 OOP Java Programmer 也必須要面對現實,不僅僅是 JDK 本身,慢慢地加入了 FP 的元素,還有其他跟 Java 相容的新語言,可以讓我們選擇如何踏入 FP 的世界。

Java 的優勢,是將近二十年來累積而成的龐大函式庫,如果說要以跟 Java 相容為前題,跨足進入 FP 的世界,我們可以選擇的是 GroovyScala,至於 Jython 或是 JRuby,都只能算是另一個語言的 Porting,就不需要去考慮使用他們。

在面對技術趨勢的選擇時,我們可以使用 Google Trend: Groovy vs Scala 觀察搜尋的趨勢,Groovy 跟 Scala 比較起來,還是 Scala 比較吸睛,重點還是在 Scala 天生支援的 Actor 功能。

以往 Java 一直都是在 Server Side 佔據著重要的地位,當我們撰寫 Server 程式時,最重要的就是要解決多人共用的運算環境,這是 Scala 從 erlang 借來的 concurrent 運算的 Actor 所要作的事情,由於 mailbox 並行運算在 erlang 已經被驗證過是個絕佳的實做方式,我們也更容易接受,選擇 Scala 作為 Java 的下一步,會是比較好的決定。

在 google 搜尋 groovy vs scala的時候,可以看到很多人的爭執。

  1. Scala? Groovy? Why Java is the right programming language for 2014 and beyond
  2. What are the key differences between Scala and Groovy?
  3. To Scala or Groovy? Which is better for a 'mathematical' approach?
  4. Java.next(): Groovy vs. Scala

在討論時,首先被提出來的就是 static type/dynamic type 的差異,再來是談到 learning curve 的差別,通常認為學習 scala 需要花多一些時間。

如果不深入談技術本質上的差異,我們再來看看 Java 爸爸 James Gosling 的代言

During a meeting in the Community Corner (java.net booth) with James Gosling, a participant asked an interesting question:

"Which Programming Language would you use now on top of JVM, except Java?".

The answer was surprisingly fast and very clear: - Scala.

再來看看 Groovy 的爸爸 James Strachan,在 blog 文章 Scala as the long term replacement for java/javac? 所說的話:

I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy.

聽爸爸的話準沒錯!