カオスを単純化する秘訣とは?
効率的なプログラミングに必須の数学的(論理的)思考を、とても平易に説明した良書。
数学…と言うと難しそうですが、要はパターンを発見するって事です。
私のような文系出身者でも読めるように、難しい数式とかは全くありません。
本書を読む事によって「問題を単純化しソースに落とし込む過程」を身に付けられます。
コンピューターはパターンがお好き
コンピューターは同じ手順を(人間より速く)繰り返すのが得意です。
そして繰り返しをさせる為には、実現したい処理をパターン化(単純化)する必要があります。
(そうしないと繰り返せませんから)
そうやって出来たパターン(手順)のことを、世間ではアルゴリズムと言っています。
私の専門であるゲームプログラミングでも、ルールを見極めパターン化し、単純なアルゴリズムに収束させる能力は強力な武器となります。
実際私が出会った達人クラスのプログラマは、皆その能力値が半端なかったです。
そういった人達が書いたソースは、まさにエレガントなものでした。
視点の引き出しを増やせ
本書では、一見複雑そうな処理をパターン化する考え方、すなわち数学的思考をじっくり解説してくれます。
そしてパターンを見出す時は、どんな視点で問題を見るかが大事です。
視点、これは本~~当っに大事です。
視点によってプログラミングの難易度は、驚くほど劇的に変わります。
本書では、曜日やトランプなど身近なものを例にして、定番の視点を紹介しています。
- 表にする
- 分割して考える
- 典型的な例を使う
- グループ化してみる
- 最小の構成だけにする
などなど、どれも歴史を経て人類が編み出した知恵ばかりです。
こういった視点の引き出しを増やすと、パターンを見付ける能力がグングン上がります。
おそらく天才な人達は、こういった事を脳内で超速にやってしまうのでしょうね。
凡人の冴えた戦術
ちなみに天才じゃない我々は、紙に書いて検討しながらプログラミングするのがオススメです。
私は常日頃からノートを持ち歩き、色々書き殴ってます。
それはさておき…
アルゴリズムを組む力をじっくり身に付けたい!
そんな方はぜひ本書を読んで視点の引き出しを増やし、数学的(論理的)思考のノウハウを知って欲しいと思います。
なお、最初はとりあえず 1, 2, 3, 5, 7 章だけ読んでおけばOKです。
(他の章は少し抽象寄りなので、慣れてからの方が良いかと)