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

羽生田さんから「Scalaスケーラブルプログラミング」を献本していただいた。
まだ発売前の本を手にするのは嬉しいものだ。

http://www.amazon.co.jp/o/ASIN/4844327453

この本の原著は2年ほど前からPDFとして売られたものの翻訳版である。
もちろんPDF版は何度も改訂され最新版として本になった。

http://www.artima.com/shop/programming_in_scala

この翻訳本もScala2.7.2をベースに動作確認しているそうなので最新の内容をカバーしている。

原著は「Programin in Scala」というものでとても読みやすいものだった。
同じくこの翻訳本も読みやすい。

しかし、簡単に理解出来るかというと そう容易ではない。

何しろScalaJava以上のオブジェクト指向の能力を持ち、かつ、関数型の特徴も併せ持っている。
そして、両者を組み合わせた機能もある。  なので言語として機能が豊富なのだ。

よくブログなどに「Scalaはカオスだ」という発言があるが、最初はこのように見えるのも仕方がない と思えるほどに機能が豊富である。

しかし、ある程度使い込むと、ほんとうに使いやすいな〜 と感じる言語である。
とても静的な言語だとは思えない 手になじむ言語である。
多分記述を省略した時のデフォルト仕様がスクリプト系の言語と同じような仕様に調整されているおかげではないかと思う。また、型推論なども処理フローによって戦略を変えているようなので、そのあたりのチューニングの具合が丁度いいのであろう。

Scalaの言語仕様としての構文は極めて少ないのだが、ScalaDSL的な記述能力から、言語構文と思える表現が沢山ある。
いうなれば言語内DSLScalaの言語としての特徴を形作っている。

Scalaの言語を覚えるというのはそれらの言語内DSLを覚えるようなものである。

そしてこの本はそれらのことをとても親切に教えてくれる。

言語設計者が書いた本だけあって、「なぜこうしたのか」ということが随所に書かれている。
私が特に嬉しかったのは関数型の特徴を使った構文などを丹念に説明してくれているところだ。

などなど、Scalaのもっている様々な特徴をとても丁寧に説明しているのがこの本である。
丁度言語設計者がScala初心者に対してかみ砕いてScalaを説明しているようである。

今後主流になる言語がもつべき特徴をいくつも備えている言語なので、この本で得た知識は無駄にならないと思う。
20年ほど前にSmalltalkで得た知識がいまだに役に立っているように、Scalaで得た知識も20年後でも通用するような気がする。
さすがに私は20年後には日曜プログラマーも出来なくなっているとは思うが...

関数型のプログラミングに興味のある方には是非一読をお勧めする。