最近scalaが自分のなかで流行ってる(・ω・)/
とりあえず、現在日本語で出版されている唯一のscala本
Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)
- 作者: Martin Odersky,Lex Spoon、Bill Venners,羽生田栄一,長尾高弘
- 出版社/メーカー: インプレス
- 発売日: 2009/08/21
- メディア: 単行本
- 購入: 18人 クリック: 687回
- この商品を含むブログ (121件) を見る
Javaをある程度知っている人(自分も)なら、とりあえずちょっと触っただけでも、Javaで気に入らないところというか、めんどくさいところが簡単に書けるので、それだけでも十分試してみる価値があると思う。
まずは、機能的にはJavaとは変わらないが、すごく細かいところを挙げると・・・
- setterやgetterの省略記法
- 型推論
- デフォルトがpublicなのでpublicと書く必要がない(ていうかpublicってキーワードがない)
- import文の書き方
- System.out.println() が println() だけでいい。
(どうでもいいようだが、個人的には、Javaでちょっとデバックするときに、System.out.printlnと書くのがイライラする(^_^;)ので、こんなことでも嬉しい)
しかし、betterJavaとしても使えるが、それだけでは勿体無いほどかなり色々な機能がある。
まずは
- traitというものがあり(RubyのModuleみたいなやつ)、によるMixinができる。
- タプルがある
- タプルによって、メソッドが多値を返すような感じで、戻り値を受け取れる。
- Map(Rubyだとハッシュ?)が書きやすい。
- メソッドの名前に記号が使える(見た目は演算子のオーバーロード?)だが、scalaでは基本的にすべてメソッド
ただ、他の言語とは違うところは、オブジェクト指向と関数型言語の融合という設計思想にあり、関数型言語としての特徴を挙げると、
- ifが値を返す(値を返すのでif文ではなくif式と呼ぶ?)
- case文(とりあえずはswitch文に似てるけど、使いこなしていくと、かなり違う)も値を返す。
- クロージャ、高階関数(引数に関数ととる関数)がある。
- 関数がリテラルとしてその場で定義できる。
そして、最終的には、for式というものがあり、これは、モナドのための記法である。
scala本にも、ある程度は説明されているが、モナドという言葉は一箇所にしか出てこない・・・
まぁ自分は、モナドを使いこなすようなレベルには、全然達してないがorz
scalaでのモナドについては、詳しく解説されてるサイト
を見つけたので、これを読んだりしながら勉強中。
日本語の情報はまだあまりないが、ぜひもっと流行って欲しいと思う。
またscalaでのwebアプリ用のフレームワークでLiftというのがあるらしいが、これに関しては、日本語での詳しい情報がほとんど見つからない・・・(-_-;)