『プログラマの数学』(第1版)読み終えたので感想
リンクは第2版のものです。未所持の方はそちらを読むべきでしょう。
以下、簡単に感想記事です。
本に期待していたこと
ITエンジニア、開発者として働いていくのなら、情報工学、アルゴリズム、数学の勉強が必要だと考えています。
しかし高校数学の途中で挫折した経験があり、しかも随分と間が空いているものなので、優しい本から手を出そうと思いました。それで選んだのがこの本です。
この本から得た学び
数学の基本知識となる部分はもちろんですが、「複雑な問題への取り組み方」を学んだように思います。
238ページに記載のファンタジーの法則こそ、本で学んだ数学の知識を武器として扱うために必須の考え方です。
【ファンタジーの法則】
「こちらの世界」で解けない問題があったら……
(1)問題を「こちらの世界」から「別世界」に持っていきます。
(2)そして、問題を「別世界」で解きます。
(3)最後に、得られた答えを「こちらの世界」に持って帰ります。
本書では複雑な問題が繰り返し別世界に運ばれ、解かれた上でこちらの世界に戻されてきました。より多くの「別世界」を知ることと、この考え方を持つ事で、今後問題に取り組む姿勢が変わっていくことを期待しています。
以下、面白いと思った章のトピックをピックアップ。
第2章 論理
カルノー図とundefinedの説明が分かりやすかったです。
私は集合を考えるのが苦手なのですが、カルノー図を書けばMECEに全体集合を考えられる事ができそうです。今後多用しそう。
またJSを書く時によく見る(よく見てはいけない)undefinedがTrue/Falseと同列の論理に登場して驚きました。
第4章 数学的帰納法
等差数列の公式について数学的帰納法で説明されて感動しました。
また、ループの構成に大事な2つの要素、目的を果たすことと終了すること、というのも普段意識せずやっているけどちゃんと意識すべきかなと思うようになりました。
第5章 順列・組み合わせ
「もれ」と「だぶり」に注意し...数えるものの性質を見抜いて数えることが大事だと言います。
10メートルの道に、端から1メートル間隔で木を植える。木は何本必要?
木の本数ではなく木と木の間の個数を数えなくてはならない。
第6章 再帰
再帰処理を書く事はできるしむしろ得意なくらいと思っていたのですが、この項がよく理解できませんでした。もっかい読む。
第8章 計算不可能な課題
現実的な時間内に解けない課題は計算不可能であるというのは、業務系ソフトウェア開発に関わった事がある身としてしっくりきます。
カウンタブルという概念は覚えておこうと思います。
ToDo3つ
- 再帰について再読する
- 競プロを継続し、その中で「ファンタジーの法則」を使う
- 付録で紹介されていた『虚数の情緒』『美しい数学』を読む
蛇足な懺悔
買ったの3年前だった...!
そりゃ第2版も出るわけですよ。
この記事が気に入ったらサポートをしてみませんか?