scalaで、コップ本(第一版)に書いていないけど重要だと思うこと

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

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版


真面目に、scalaを普及させるにはどうすればいいかを色々考えてる今日この頃(`・ω・´)

今でもコップ本Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in 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を読みましょう。その他にも書いている人はいますが、ちょっと全部まとめるのはめんどくさかった(´・ω・`)