プログラマの数学

カオスを単純化する秘訣とは?

効率的なプログラミングに必須の数学的(論理的)思考を、とても平易に説明した良書。

数学…と言うと難しそうですが、要はパターンを発見するって事です。
私のような文系出身者でも読めるように、難しい数式とかは全くありません。

本書を読む事によって「問題を単純化しソースに落とし込む過程」を身に付けられます。

コンピューターはパターンがお好き

コンピューターは同じ手順を(人間より速く)繰り返すのが得意です。

そして繰り返しをさせる為には、実現したい処理をパターン化(単純化)する必要があります。
(そうしないと繰り返せませんから)

そうやって出来たパターン(手順)のことを、世間ではアルゴリズムと言っています。

私の専門であるゲームプログラミングでも、ルールを見極めパターン化し、単純なアルゴリズムに収束させる能力は強力な武器となります。

実際私が出会った達人クラスのプログラマは、皆その能力値が半端なかったです。
そういった人達が書いたソースは、まさにエレガントなものでした。

視点の引き出しを増やせ

本書では、一見複雑そうな処理をパターン化する考え方、すなわち数学的思考をじっくり解説してくれます。

そしてパターンを見出す時は、どんな視点で問題を見るかが大事です。

視点、これは本~~当っに大事です。
視点によってプログラミングの難易度は、驚くほど劇的に変わります。

本書では、曜日やトランプなど身近なものを例にして、定番の視点を紹介しています。

  • 表にする
  • 分割して考える
  • 典型的な例を使う
  • グループ化してみる
  • 最小の構成だけにする

などなど、どれも歴史を経て人類が編み出した知恵ばかりです。
こういった視点の引き出しを増やすと、パターンを見付ける能力がグングン上がります。

おそらく天才な人達は、こういった事を脳内で超速にやってしまうのでしょうね。

凡人の冴えた戦術

ちなみに天才じゃない我々は、紙に書いて検討しながらプログラミングするのがオススメです。
私は常日頃からノートを持ち歩き、色々書き殴ってます。

それはさておき…

アルゴリズムを組む力をじっくり身に付けたい!

そんな方はぜひ本書を読んで視点の引き出しを増やし、数学的(論理的)思考のノウハウを知って欲しいと思います。

なお、最初はとりあえず 1, 2, 3, 5, 7 章だけ読んでおけばOKです。
(他の章は少し抽象寄りなので、慣れてからの方が良いかと)

プログラマの数学

9.5

分かりやすさ

9.3/10

普遍性

10.0/10

コストパフォーマンス

9.6/10

実用性

9.0/10

Points

  • 身近な例で数学的思考を学べる
  • アルゴリズムの本質が分かる
  • 本書の深さが分かれば上級が見える

Notes

  • 1, 2, 3, 5, 7 章から読むのが吉

Kuniaki Ebata 登録者

大学中退(文系)の専門卒 日本で唯一のプログラミング書籍評論家 プログラマーで現役のスキー国体選手です 頭と体を動かすのが大好きなフレンズなんだね 専門学校で先生もやってます プログラミングは21歳から 貴族じゃない独身 持病:重度うつ病(薬とサポートのおかげで何とか生きてます) 教え子をゲーム業界へどんどん送り込み、世界を面白くする野望を実現中 プログラミングが上達するメルマガやってます ここを見たゲーム業界の卒業生へ 新作が出たら、連絡するか現物を送ってくれると嬉しいです ただし18禁・CERO-Dの場合は、厳重に梱包の上、品名をパソコン部品にて送る事(だいじ) このページが参考になった方へ ぜひSNSやブログでシェアして欲しいです お願いします(少し上にボタンあります) 最近Google先生が中身の無い「いかがでしたか?」サイトを優遇するので困っています助けて下さい(>_<) シェアしてくださった方には 小冊子 プログラミング書籍が10倍わかる読み方(pdf) を差し上げます こちらからご報告頂くか、こっそりDMを送って下さい