tkenichi の日記

毒舌皮肉系恥さらし日記

珠玉のプログラミング

珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造

珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造

自分が今プログラミングで直面している問題の解決のために読んでみたり、アルゴリズムの簡単に使えるレシピ集を期待すると、この本は裏切られる。取り上げられているものはむしろ典型的な問題が多く、そこで使われているアルゴリズムがどうやって考えられたかという思考実験をするための本と思えば楽しめる。

ソフトウェア開発者だったらよく遭遇するような具体的な問題から始まり、問題の抽象化、データ構造の考察、アルゴリズムの改良、といった感じでどの章も進められており(もとは雑誌のコラムだったからかな)、読み物としてちょっとした空き時間に1章ずつ読んでいくといいかもしれない。特に章末の問題はセンスあふれるものが多く、プログラミングパズル集としても(巻末に簡単な解答例もついている)使える。

個人的に面白かったトピックは、2分探索が意外と実装が難しかったという歴史的事実と「封筒裏の計算」の重要性。封筒裏の計算というのは、大体の見積もりを封筒の裏にある余白ぐらいのところでさっとやってしまうこと。そのための上手な近似の方法、単位系を使った計算のチェックの仕方(大学受験のときの物理では基本テクニックだったような気が)、などが紹介されている。重要なのはそういう楽な計算のテクニックを覚えることでよりも、思いついた時にラフな計算ですぐに自分のアイディアが正しそうかを見積もるというその習慣のほう。

この本には書いていないが、開発者としては、思いついたアイディアを、ちゃんと設計して大掛かりなシステムに組み込む前に、正しく動きそうかどうかを簡単に検証できるような技術を磨き、そうすることを自然にするような習慣を身につけたいな、と思ったのでした。