珠玉のプログラミング

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

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

問題の定義(課題や制約条件)を把握し、その中から見出される規則性を上手く活用してコード量やメモリ使用量、計算量を劇的に削減する方法(アルゴリズム)の”考え方”を勉強出来る本。

単純に楽しんで読めた。プログラミングに限らず、定型的なフレームワークや定石は大事だと思う。物事を早く理解したり、早く処理出来るからである。

ただし、「問題を解決する上では力技」であると理解すべきである。

というのも、フレームワークや定石は、ある程度”汎用化”されているために様々なシチュエーションにも使える一方で、「個々の解決したい問題の本質に対して必要十分な方法を提供するものではない」からである。問題定義を明確にし、”汎用化”で逆に無駄になっているところを見直し、そぎ落とすことが大事である。つまり、課題に真摯に向き合う姿勢こそが「珠玉のプログラミング」への道だと思う。

著者が引用している(Antoine de Saint-Exupery)ように、
「設計が完璧だと思えるのは、もうこれ以上付け足すものがないときではなく、もうこれ以上取り去るものが無いときだ」
というのは、いい表現だと思いました。

もちろん、問題を解決する方法を1つは抑えて、「比較対象となる方法」を持っている点では必要です。定型的なフレームワークや定石(常識)はベースである。ベースを持たぬものに「新しいモノを生み出す力」は宿らないと思います。

「定石の勉強をしつつ、問題の本質に常に向き合う姿勢が大事」

だと改めて思う今日この頃。