makotan _at_ gmail dot com

なんでScala(というかオブジェクト指向と関数型のハイブリッド言語)なのか

なんで、わざわざScalaをやろうと思ったのかまとめてない気がした。
別にJavaで困ってないし、というかほかにもいろいろ言語あるのに・・・


最近のJavaのプログラミングってオブジェクトは限りなくステートレスに作ってそこにデータを渡す形が主流だなぁと。例外でステートフルにするとスレッド周りで相当注意しないといろんなバグを生み出すし。
そんなこんなでフレームワークとか作る仕事してると、たま〜にJava言語が持ってるうざったさにぶち当たって困ったことになる。
JVMGC以外悪くないのにJava言語が・・・ってなるとJVM上で動くJava言語以外の言語を選びに行く自然な流れができあがりつつあったわけです。


で、なんで関数型かってところは、個人的にはステートレスに作るんなら関数型でしょ〜っていう安易な選択w
ステートレスだけで作ると、逆に実装が面倒になるのが判ったw
ってことで、ステートフルもサポートしてくれないと困る!
この時点で純粋な関数型は消えて、ハイブリッドな関数型が選択肢に・・・
関数型に移行しようとした理由はもう一個あるけど、これはまだ詳細なイメージすら出来ないのでそのうち・・・


あとの選択は非常に簡単。ググって日本語含む情報が多そうなもの、それなりに実績があるもの、とっかかりとして使えそうなフレームワークがそろってる感じがあるもの。
で、Scalaが残ったんだけど・・・ってここまでの決定は実はだいぶ前の話。
最近はてなに書くようになったのは、Scala-IDEがやっとまともそうになったからwww
だいぶ前のScala-IDEはほんとにできの悪い子だったんだけど、今のScala-IDEはなかなか普通に使えそうな香りがするので試してみてるところ。
あと、sbtがmavenスタイルの構造になってくれたのが大きいかも。
もう一つはPlay Frameworkの2.0でScalaがサポート対象になったから。


そんなこんなでプライベートはしばらくScala
とりあえず、JavaでイメージできてたことをScalaで出来ないのは困るので足回りをいろいろテストケースで作って遊んでるところ。
ちなみに、一番の悩みは設計。言語仕様とライブラリとしては豊富なだけでそんなに複雑(表記を除く)って訳じゃないんだけど何をどこでどう使うかを悩むのが難しいな〜