Scala で書いてる個人的なアプリケーションは、今月中にどこかでリリースしたいなぁ。書こうと思ってから数ヶ月経っているわけだし…… しかし仕事も詰まってる。
仕事で Perl, JS, AS と書いて、個人的に Scala, Ruby をそれなりに書く生活が続いてる。飽きなくて良い。それぞれ良いところ、使い所があると思う (好き嫌いはあるけれど……)。
僕は最近 Scala が結構いいと思っていて、なんでかっていうと
- 変数に型がある。コンパイル時にそれなりに考慮される (安全)
- 必要以上に型を書く必要がない (型推論)
- 既存の資産の上に乗っている (Java)
- Java のクラスはいまいち使い勝手がよくないけど……
- 関数型的にも、オブジェクト指向的にも書ける (TIMTOWTDY)
- 逆に、Scala のコードを全てちゃんと理解しようとするならどちらも知ってないといけない
- implicit def
- 安全なオープンクラスのようなもの
あたりが気にいってる。十分に書きやすいなら、型がついていたほうが安心できていいし、Java という巨大な既存資産を無駄にしない姿勢が好きだ。
一方で、LL として使おうとするとちょっとやりにくい部分もある。
- コンパイルが遅い (かなり遅い)
- 正規表現リテラルがない
- メタキャラクタをエスケープするかしないかでとても重要
- """regexp""".r とか書きたくない
- LL なら普通はあるようなメソッドがない。あるいは名前が違う
- replace (search:Regex, replace:(Matcher => String)) みたいなのとか……
- List#join 的なものは mkString という高機能なものになっている
- scaladoc がダメすぎる
- 書きなおそうと思ったら scaladoc がそもそもビルドできなかった……
簡単なスクリプトを書くような分野には向いてないと思うけど、軽めのウェブアプリケーションとかだとちょうどよくて、Java と LL の中間ぐらいにピッタリとハマる言語だと思う。