當全世界都在走向 functional programming 的時候,身為一個傳統的 OOP Java Programmer 也必須要面對現實,不僅僅是 JDK 本身,慢慢地加入了 FP 的元素,還有其他跟 Java 相容的新語言,可以讓我們選擇如何踏入 FP 的世界。
Java 的優勢,是將近二十年來累積而成的龐大函式庫,如果說要以跟 Java 相容為前題,跨足進入 FP 的世界,我們可以選擇的是 Groovy 與 Scala,至於 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的時候,可以看到很多人的爭執。
- Scala? Groovy? Why Java is the right programming language for 2014 and beyond
- What are the key differences between Scala and Groovy?
- To Scala or Groovy? Which is better for a 'mathematical' approach?
- 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.
聽爸爸的話準沒錯!
沒有留言:
張貼留言