プログラマの数学

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

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

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

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

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

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

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

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

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

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

視点の引き出しを増やせ

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

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

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

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

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

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

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

凡人の冴えた戦術

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

それはさておき…

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

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

なお、最初はとりあえず 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 章から読むのが吉

もっと知りたい?
C言語_初級 | C言語_中上級 | C++_初級 | C++_中上級 | C#_初級 | C#_中上級 | Java_初級 | Java_中上級 | コンピュータ_サイエンス | アルゴリズム_ | ゲーム_プログラミング | DirectX_ | Unity_ | ゲーム_デザイン | ゲームのしくみ_ | 数学_ | プログラミング_テクニック | 歴史_偉人 | ソフトウェア工学_ | 読み物_エッセー | 人生_生き方 | 創造_発想 | 雑誌_ | 漫画_小説_映画 | メルマガのバックナンバー_

Kuniaki Ebata 登録者

プログラマーで現役のスキー国体選手です。
頭脳と体を動かすのが大好きなフレンズなんだね。専門学校で先生もやってます。

教え子をゲーム会社にどんどん送り込み、世界を面白くする野望を実現中。

プログラミングが上達するメルマガやってます。

ここを見たゲーム業界の卒業生へ
新作が出たら、連絡するか現物を送ってくれると嬉しいです。
ただし18禁・CERO-Dの場合は、厳重に梱包の上、品名をパソコン部品にて送る事(だいじ)。