技術 ブログ

読書メモ:プログラマの数学



難解な数学をわかりやすく解説してくれる「数学ガール」シリーズで知られる結城浩先生の、プログラミングに役立つ数学の書籍があると知り、プログラミング力の向上を目指して早速購入しました。

全体として、数式の使用を最小限に抑え、丁寧に解説されているため、大学で文学部に在籍し数学にあまり触れてこなかった方や、高校時代に数学が得意でなかったけれどエンジニアを目指している方にも理解しやすい内容だと感じました。

特に、基本情報技術者試験の合格を目指している方にとっては、事前に読んでおくことで理解の助けになる場面が多くあると思います。

また、私のようにエンジニア歴が長い人にとっても、学びの多い一冊でした。
排他的論理和(XOR)や等値(=)、含意(「AならばB」)などの論理は、直感的に理解しにくく、これまでは真理値表を暗記して対応していたのですが、本書の丁寧な解説を通じて、その本質を理解することができました。

さらに、カルノー図を用いて論理をシンプルに整理する手法も紹介されており、実務でも非常に役立つと感じました。カルノー図については、本書で初めて知りました。

また、3値論理に関しても、動作そのものは知っていたものの、「なぜプログラムで3値論理が用いられるのか」という背景を改めて理解することができました(恥ずかしながら、「3値論理」という名称自体を本書で初めて知りました…)。

数学的帰納法や再帰、置換、組み合わせ、順列といったトピックについても、目から鱗的な内容が多く読みながら「本当に理解できていたのだろうか」と自問自答する良い機会となりました。順列における「0! = 1」という基本的な知識が抜けていたことにも気づかされました。

また、指数関数的な爆発を対数を用いて抑えるという考え方の重要性にも改めて気づかされました。

終盤に扱われている「計算不可能な問題」の章はやや難解でしたが、コンピュータにとって「数学的に計算できないこと」が存在するという事実を理解する上で、大変有意義な内容でした。

さらに、付録として紹介されていた機械学習の章では、ニューラルネットワークの原理が初学者向けに非常にわかりやすくまとめられており、今後の学習に向けた良い入り口になると感じました。

コメント投稿フォーム

メールアドレスが公開されることはありません。 が付いている欄は必須項目です