結構前に、日本語版の第二版がでていないときに書いて、内容が古い部分がありますが、めんどくさいのでそのままにしておきますよーーー。というか日本語版の第二版でるので、とにかくそれ買いましょうーーーここに書いた不満点(?)がだいぶ解消されているんじゃないかと思います(`・ω・´)

- 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
- 出版社/メーカー: インプレスジャパン
- 発売日: 2011/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 235回
- この商品を含むブログ (46件) を見る
真面目に、scalaを普及させるにはどうすればいいかを色々考えてる今日この頃(`・ω・´)
今でもコップ本はscalaを本格的に勉強するには、一番いい本ですが、色々足りない部分もあります。
2.7系から2.8系で、結構大幅に言語仕様が追加されました。しかし、コップ本がでたのは2.8以前なので、2.8の新しい情報が書いてないわけです。しかし、現在は2.8が主流なので、これはまずい。
英語の原著は第二版でる(もうPDFのEarly Access版はでてる)らしいよ*1
だいぶあとになってからの追記英語版は、正式なものがでたようです。
また、コップ本はある程度高度な話題も書いてありますが、個人的にはもっと詳しい本があってもいいと思います。
で、以下のような情報が、日本語で、検索しやすい状態で、もっと広まらないとまずいと思います。ということでメモ
*2
- Structual subtyping
- コンパイラプラグイン
- @tailrec 、 @switch 、@inline
- ソースコードリーダー (Lispのリーダーマクロに近いことができる?)
- (プラグインによる) 限定継続 (2.8から)
- 引数の名前渡し (2.8から)
- デフォルトパラメータ (2.8から)
- デフォルトパラメータと、オーバーロード、オーバーライドした場合の複雑な問題
- package object (2.8から)
- JavaConversions (2.8から)
- 型コンストラクタ
- 型が T [ T [ A ] ] みたいな感じで、パラメーター化して、ネスト(?)できる的な*3
- Predefの <:< =:= <%<
- Either Right Left
- Sourceの詳細な使い方。そもそも使えるのか?2.7のときcloseがないとか評判悪かった。あと、速度とかの実用性
- Stream (遅延評価される無限リスト)
- break (例外投げてループから抜けるっていう・・・)
- SortedSetのつかいかたとか
- いろいろなコンパイラオプション
- Vector (赤黒木)
- CanBuildFromってなに?( ゚д゚ )的なコレクションライブラリの暗黙パラメーターつかった変態的な黒魔術の詳細
- 2.7と2.8の互換性の問題
- ClassManifest っていうの使うと(ある程度擬似的に?)型の情報とりだせるらしいけど、どうやるの?どういう仕組みになってるの?
- PartialFunction の詳細な使い方(一応PartialFunction自体は載ってるけど、数ページしか解説されてなくて、物足りない・・・)
- Enumeration の詳細な使い方*4
- specializedアノテーション 2.8から。プリミティブ型の最適化。パフォーマンス求められる場合は結構重要
この辺て、それぞれのscala使いの人のblog*5にはちらほら書いてあったり、scala東北の勉強会とか参加して、かなり積極的に情報を探さないと見つからない、というか、そもそも知らないわけです。
しかし、ある程度の中上級者を目指す場合、個人的には、上記に上げたようなものを勉強するのは必須だとおもいます。
*1:2版が、日本語に翻訳されるのか、翻訳されるとしたらいつ出るのかは、知りません
*2:個人的にも、完全に理解しきれてないものがある、という意味でもメモ
*3:追記: 名前思い出せなかったので、最初ふわふわっとした感じで適当に書きましたが、水島さんのblogに書いてあったりする、高階のジェネリクス(Type Constructor Polymorphism)とかジェネリックな型エイリアスとかそういった型まわりのお話。コップ本では全部解説されてないはず。そして自分自身も全部理解できてない
*4:っていうかつかいづらいんだけど・・・(´・ω・`)なんだか、中身リフレクションだらけだし・・・
*5:まずは、 ゆろよろさん、みずしまさん、などのblogを読みましょう。その他にも書いている人はいますが、ちょっと全部まとめるのはめんどくさかった(´・ω・`)