Scala は関数型言語ではない
http://enfranchisedmind.com/blog/posts/scala-not-functional/
via http://d.hatena.ne.jp/camlspotter/20090515/1242349686
最近、気になっている話題だったので、頑張って読んでみました。
ちょっと煽り気味の文章だし、明らかな間違い(カリー化の話)とかもあるけど、要点は以下の2つだと思います。
- OCaml がオブジェクト指向っぽい関数型言語であるように、Scala は関数型っぽいオブジェクト指向言語である。Scala で関数型っぽく書くのは面倒くさい。(だから関数型言語とは呼ぶな)
- JVM言語としては、Scala は大いなる前進である。
オブジェクト指向 ← Java ― Scala ― OCaml ― (Haskell) → 関数型
みたいな図式は、まぁだいたいそんなもんだろうし、どこまでを関数型と呼ぶかは人によりけりだと思うのですが(僕は遅延評価と部分適用がないと関数型とは認めませんよ:p)、Scala が関数型の要素を取り入れたのは、どうなのかなと思うのです。
いや、Java っていちおうエンタープライズ向けってことになってて、100 人以上のプログラマを集めて開発したりするわけじゃないですか。で、100 人以上のプログラマに対して関数型ってのは、敷居を高くすることはあっても、なかなかメリットを得られないんじゃないかなと。僕は楽しいですけどね、100 人で Scala、100 人で Haskell。
結局、何が言いたいかというと、Scala は Java の後継というのとは違うと思うようになったということです。
たぶん Java の後継は、もう少し抽象度が高くなって、短く書けるようになった、純粋手続き型言語じゃないかな(オブジェクト指向である必要もないかも)。
ちなみにそれぞれの言語の認知度を見てみると‥‥日本では Haskell、OCaml も健闘してるけど、世界的にはやっぱり JVM が強いんだなぁ。
日本語のページ java に一致する日本語のページ 約 8,570,000 件 scala に一致する日本語のページ 約 635,000 件 haskell に一致する日本語のページ 約 627,000 件 ocaml に一致する日本語のページ 約 277,000 件
ウェブ全体 java の検索結果 約 396,000,000 件 scala の検索結果 約 25,000,000 件 haskell の検索結果 約 8,210,000 件 ocaml の検索結果 約 1,810,000 件