読者です 読者をやめる 読者になる 読者になる

Happy My Life

日常とか技術とか

関数型言語の入門としてのScala

Scala

予約開始時から発売日を指折り数えて待っていたScala スケーラブルプログラミングが発売された。

私の周りにも、この本を買った人は結構多い。複数の人が、同じ本を同じタイミングで購入する事はなかなか珍しい出来事なので、それだけ待望されていた本なのではと感じている。

Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)
Martin Odersky Lex Spoon、Bill Venners 羽生田 栄一

インプレスジャパン 2009-08-21
売り上げランキング : 55186

Amazonで詳しく見る
by G-Tools

Scalaとは

かなり大雑把に説明すると

  • JavaVM上で動作する(既存のJavaライブラリがすべて使用できる)
  • 手続き型言語関数型言語の両方を備えるハイブリッド言語
  • LLっぽい文法だけど、型チェックしているよ

入門書の枠を越えた本

Scalaでは手続き型言語関数型言語の両方の特徴を備えているので、それぞれの文法の解説が必要になる。

その説明は、入門書によくある文法の説明やちょっとしたサンプルだけに終始したものではなく、なぜそういう言語設計にしたか、オブジェクト指向のメリットは何か、関数型言語のメリットは何か、という言語設計の背景にある考え方までもが書かれている。

そのような解説があちこち散りばめられているので、言語仕様が理解しやすく、また、関数型言語の入門者にも、関数型言語のメリットを学習しながら、手を動かして言語も学ぶ事ができるという、非常によい本となっている。

関数型言語を学びたい人へ

今までC++/Javaなどの手続型言語を使用した事あるが、関数型言語にまったく触れた事の無いという方は、かなり多い。ゲームプログラミングの今後 でも書いたけど、今後のトレンドは関数型言語にシフトしてきている。C++/Javaの知識だけでは、時代に取り残される事もはっきりしてきた。

では、どの言語で学んでいけばよいか? を迷う人も多いはず。Lisp,Haskell 等大抵の関数型言語は無償で入手可能だし、解説等もWeb上で数多く公開されている。ただ、もうしばらくは業務で関数型言語が導入される事も無いはずなので、勉強のための勉強という事にもなりがちで、いまいち気乗りしないしかもしれない。そんな時にはScala

オブジェクト指向関数型言語の両方を学ぶ事ができ、その文法的な知識をそのまま業務に活かす事も可能。ちょっとしたモジュールをJavaではなくScalaで書いて、という事もできる訳だから。

また、Scalaそのものを業務で使う事が無くても、この本を通してScalaでの考え方が身についていると、将来役に立つ日が来る事は間違いない。なんだかんだと、Scalaって各言語のおいしいとこ取りをした上で、非常によいバランスでミックスされた言語なので、今後新しい言語が登場した時にも役立つだろうと。

まとめ

ほんとは、プログラマ全員に勧めたい本。

その中でも

は必読かと。