珠玉のプログラミング(Programming Pearls 2nd ed.)
                 −本質を見抜いた
             アルゴリズムとデータ構造


Jon Bentley著 小林健一郎訳
ピアソン・エデュケーション 305ページ 3400円+税

pearlh.jpg (4909 バイト)




  http://www.cs.bell-labs.com/cm/cs/pearls/

 この本は、アルゴリズムの一覧的教科書ではなく、実際にあった具体的な問題がどのように解決されていったかを通して、アルゴリズムの本質が書かれいる本です。読み物として読んでもとてもおもしろいと私は思いました。また、本にはたくさんのコードがあります。(英語のWEBにもさらにたくさんのコードがアップされていますが、本だけでも十分あるのです。基本的にはC/C++を使っていて、巻末までサンプルコードがぎっしりあるカンジです。ただし、一般的な話には「擬似コード」が使われています。とは言え、ほぼC/C++と同じで、「擬似コード」から実際のコードをC/C++でどう書くか迷うようなことはないはずです。)アルゴリズムやデータ構造を勉強したいけど、分厚い教科書を端から読むのはちょっとなーという人向きです。
 それから、著者は、プログラムの実行速度向上にかなりの熱意があるようです。スピード好きの腕自慢になりたい人にも向いているかもしれません。

例として、

  1千万個ほどの(ダブりの無い)数字を効率よく記録するにはどうするか
  コードを間違えずに書くにはどうするか(2分探索を例に)
  プログラムの効率を上げるにはどうするか
  無駄の無い2分探索のコードを更にスピードアップするにはどうするか
  効率のよいソートコードを書くにはどうするか
  効率のよいサンプリングはどうするか
  効率のよい探索コードを書くにはどうするか
  ヒープ構造とは何か、どう書くか、どう使うか
  文章中から同じフレーズを効率よく抜き出すにはどうするか

などがあります。
 ぜひ、一度見てみてください。

  目次
  コラム1  真珠貝を開いて
  コラム2  「ああ(そうか)!」アルゴリズム
  コラム3  データで決まるプログラムの構造
  コラム4  正しいプログラムを書く
  コラム5  あと少しのこと
  コラム6  パフォーマンスに関する考察
  コラム7  封筒の裏で、、、
  コラム8  アルゴリズムデザインのテクニック
  コラム9  コードチューニング
  コラム10 メモリの節約
  コラム11 ソート
  コラム12 サンプリング問題
  コラム13 探索
  コラム14 ヒープ
  コラム15 真珠の列


 なお、これは原書第2版で、第1版は「プログラム設計の着想」という名で翻訳されました。(翻訳は野下浩平氏です。)第2版は主にC/C++を意識して書かれ、内容も現代的に改められています。