現場プログラマーのアルゴリズム再入門本(勝手に付けた副題)、アルゴリズム・クイックリファレンス第2版を読んだ。今年の2月に訳者の @hydrakecat さんから献本いただいていたのだが、感想を書くのが遅くなってしまって申し訳ない。
ちなみにこの本を読んでいる自分の背景を説明すると、一応大学は情報系だが、アルゴリズムや理論寄りの話は苦手。仕事ではスマートフォンアプリのコードを書くことが多く、アルゴリズムに直接触る機会はほとんど無いという人間である。
内容
第1版をぱらぱら読んだことはあり、コンパクトで読みやすい本だなと感じていた。第2版では赤黒木が削られたり、Pythonのコードが追加されたりしたようだが、受ける印象はそんなに変わってなかった(と言いつつ第1版と比較してみると、C言語の箇所が減っている)。
前の版から引き続き、とにかく実際に動くコード、実際の計算機での動き方にページが割かれている。アルゴリズムの性能比較についても、計算量の表記に加えて、実際に動かしたベンチマーク結果が付いているのは、この手の本としては珍しいのではないかと思う。
原題の Algorithms in a Nutshell をそのまま訳するとたぶん「アルゴリズムのかいつまんだ説明」という感じになると思うが、解説は本当に簡潔で、証明はほぼ省かれている*1。
一方で、AIにおける経路探索(ここで言うAIはゲームの敵キャラクターの移動ルーチン)や計算幾何学は一般的なCSの教科書には含まれないものだと思う(ゲーム作りの教科書には書いてあるかもしれないが)。全体を貫いている簡潔さの方針からすると、ここを削ってもっとコンパクトにする手もあったと思うので、これはあえて入れているのだろう。アルゴリズムの多様性を知って欲しいという著者の意思を感じる。
最後の「12章 結び: アルゴリズムの諸原則」には実際にコードを書く上で大事なことがコンパクトに詰まっているので、ここだけでも読む価値があると思う。「汝のデータを知れ」「空間と時間のトレードオフを使え」「問題を別の問題に帰着させよ」という節のタイトルだけでもはっとさせられる。
おわりに
自分は定期的にCSの基礎を復習することには、思わぬ再発見があったり、書くコードに自信が持てる効果があると感じている。「このような強固な基盤の上に自分の仕事がある」と再確認できることは、ソフトウェア製品を作る自信を高めてくれると思うのだが、他のソフトウェアエンジニア諸兄はどうお考えですか。
何にせよ、アルゴリズムの勉強は競技プログラマーにはほど遠い自分のような人間にも楽しい。これからも時々本書を取り出して、ぱらぱらめくって楽しみたい。
- 作者: George T. Heineman,Gary Pollice,Stanley Selkow,黒川利明,黒川洋
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/12/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る