「Scala嫌い。EJB2みたい」

http://blog.joda.org/2011/11/scala-feels-like-ejb-2-and-other.html
以下、Stephen Colebourne氏の意見をまとめてみた。

モジュールシステムがない
  • 複数のクラスを含むレベルでバージョンと依存関係を管理するものでなきゃ駄目。
  • 「Jar Hell」を招く
  • CORBAなどはこの問題を解決しようとした結果(の失敗作)

(このようなモジュールシステムを持っている言語は例にあげていない)

並列処理 (Concurrency)
  • 関数型言語だから安全にマルチスレッドのコードが書けるとい言うけどこれは嘘
  • 並列処理の問題は「shared mutable state」にあるがスカラはこの点において鈍感

(clojureは可変状態を別扱いにすることによって並列処理を安全にしているという点で違うようだ)

コミュニティー

(これは英語圏コミュニティーの話なんで日本語ベースのScalaコミュニティーには当てはまらない)

タイプシステム
  • 複雑すぎる型システム
  • def ++ [B >: A, That] (that: TraversableOnce[B])(implicit bf: CanBuildFrom[List[A], B, That]) : That
  • complexity complexity
    • 「パラメータ化された複雑な複雑」?? というコンセプトが存在するとSteve Yeggeにからかわれている
シンタックス
  • DSLを可能にする柔軟なシンタックスがコードを読みにくいものにしている
  • (0/:l)(_+_)
実装の質
  • ScalaコミッターのPaul Phillipsによると、複雑な言語機能が多く交わる部分がある
  • これにより膨大なテストスイートが必要になるがこれが欠けている
EJB2のよう
  • Javaによる大掛かりなプロジェクトの複雑さを減少させようという試み
    • 裏目にでて複雑さを増加させてしまった
  • その複雑さをドキュメント、「best practices」、ツールなどで克服しようとする
  • ScalaにはEJB2を最初に見たときと同じような「駄目なテクノロジー」の感触がある
  • アーキテクチャをover-engineeringしてしまった結果
結論

スカラ好きじゃない。さらに嫌いになっていく。これからは仕事でこの言語のコードを書きたくない。

以上、元ブログ著者Colebourne氏のScalaに対する意見。俺はScala体験ゼロなんで自分の意見はもっていない。ただ、尊敬する同僚がScala好きなんで一目おいてはいる。今度「Scala好き」というポストが目についたらそいう意見も紹介したい。

反応

なんとなく紹介した記事だったけど、かなりの反響だった。言語の優劣を論ずるポストはどうも熱くなる傾向がある。

kmizushimaさんから情報たくさんのコメントを頂きました。Scalaに関心のある方は御読みください。