uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

scalaはGroovyと全く競合しない

このところ思ってたのですが、ScalaとGroovyは競合しませんね。まったくしない。

適用領域に関して、GroovyのスイートスポットとScalaのスイートスポットに共通部分は、ほぼ全く全然無いと思います。

Scalaは、JVM上で動作しはしますが、Javaと完全なる別言語で、Java資産はライブラリとしてのみ使います。Scalaでのシステム開発では、Javaによる新規開発は無ければ無いほど良い開発となります。この点では、Scala者からのJavaの見方は、JRuby者から見たJavaと似ている。

Groovyは、これとは全く異なり、Groovy開発でJavaを除去はできません。GroovyはJavaの周辺ツール・ライブラリの一つに近い。Groovyが一番近いのは、あれですよ、JSPですよ。JSPJavaの関係に近い。組み合わせて使うということです。

プログラミングにおける意識についても大きく違います。Groovyプログラミングは、常にJava API層の上で行います。その差異と使い分け、ラッピングを意識します。Scalaではそれはない。Scalaの単一プログラミングモデルだけを意識すれば良い(本当か?)。

つうことで、結論は凡庸ですが、使い分けが大事ということです。今後の開発の世界はいずれにせよマルチ言語になるとして、手駒言語を何個まで増やせばいいかとか、教育方法とか、開発要員確保とかの現実世界の様々な側面でそれぞれの言語のトレードオフを評価しつつ、しなやかに選択していけば良いことでしょう。