スマホはお留守番、カフェで本を読もう!『プログラマの数学』

 

この記事の内容と対象読者
  • 『プログラマの数学/結城浩[著]』という本の紹介です
  • 数学を好きな人はもちろん嫌いな人にもオススメです
  • 理系も文系も関係なくオススメです
  • プログラマじゃない職種の方でも問題なく読める本です

 

こんにちは。ナガオカ(@boot_kt)です。

 

突然ですが、クイズです

曜日クイズ(1)

クイズ(100日後は何曜日)
今日は日曜日です。100日後は何曜日ですか。

出典:プログラマの数学/結城浩[著]/P66

 

時間がかかってもいいなら、誰でも答えは出せると思います
あなたならどうやって答えを出しますか?

  • ペンと紙を手にとって「日 月 火 水 ・・・・」と書きますか?
  • 指を100回折り曲げて数えますか?
  • Excelに日や月を入力して、ドラッグして連続データを出しますか?
  • 100日後が分かるスマホアプリを探しますか?

答えが出るならやり方はなんでもいいと思いますが、ちょっとした数学的知識があれば数秒で正解が分かりますよ

 

 

 


 

たまにはスマホを置いて、本を読んでみませんか?

最近思うんですよねぇ・・・

みんなスマホに支配され過ぎ!!!

人工知能にも劣るスマホにも、既にこういう状態・・・

 

もちろん息抜きはいいんですが、
そのスマホ!息抜きっぱなし専用じゃないですか?

 

ってことで、頭の体操にバッチリな、超オススメ本を紹介します!

数学と考えると難しくなっちゃいますが、パズルとかクイズとかと思ってもらって問題ないです

 

プログラマの数学/結城浩[著]

今回紹介する本はこれです

プログラマの数学

僕が持っている『プログラマの数学』

タイトルに「プログラマ」と付いていますが、別に関係ないです
気にしないでください

第1章にある2進法はプログラマじゃない方には分かりづらいかも知れませんが、最近ではプログラマでも2進法(2進数)や16進数を知らない人もいるでしょうし、気にしないでいいでしょう
分からなければ読み飛ばしていいです

目次

目次を見てみましょう

どうでしょう?
数学的な用語も出てきますが、「クイズ」とか「恋人探し」とか面白そうな言葉が出てるでしょ

意外とね、気軽に読めるんですよ

ノートとペンがあると、更に楽しいですよ!!

  • 第1章 ゼロの物語–「ない」ものが「ある」ことの意味
    • 2進法
    • 位取り記数法
    • 指数法則
    • 0の果たす役割
    • 人間の限界と構造の発見
  • 第2章 論理–trueとfelseの2分割
    • どうして論理が大切なのか
    • 乗車料金の問題–網羅的で排他的な分割について
    • 複雑な命題を組み立てる
    • ド・モルガンの法則
    • カルノー図
    • 未定義を含む論理
  • 第3章 剰余–周期性とグループ分け
    • 曜日クイズ
    • 累乗クイズ
    • オセロで通信
    • 恋人探しクイズ
    • 畳の敷き詰めクイズ
    • 一筆書きクイズ
  • 第4章 数学的帰納法–無数のドミノを倒すには
    • ガウス少年、和を求める
    • 数学的帰納法–無数のドミノを倒すには
    • 奇数の和を求める–数学的帰納法の例
    • オセロクイズ–誤った数学的帰納法
  • 第5章 順列・組み合わせ 数えないための法則
    • 数えるとは–整数との対応付け
    • 植木算–0のことを忘れるな
    • 和の法則
    • 積の法則
    • 置換
    • 組み合わせ
  • 第6章 再帰–自分で自分を定義する
    • ハノイの塔
    • 階乗、ふたたび
    • フィボナッチ数列
    • パスカルの3角形
    • 再帰的な図形
  • 第7章 指数的な爆発–困難な問題との戦い
    • 指数的な爆発とは何か
    • 倍倍ゲーム–指数的な爆発が生み出す困難
    • バイナリサーチ–指数的な爆発を利用する検索
    • 対数–指数的な爆発を把握する道具
    • 暗号–指数的な爆発を守る
    • 指数的な爆発に対処するには
  • 第8章 計算不可能な問題–数えられない数、プログラムできないプログラム
    • 背理法
    • カウンタブル
    • 対角線論法
    • 計算不可能な問題
    • 停止判定問題
  • 第9章 プログラマの数学とは–まとめにかえて
    • 本書を振り返って
    • 問題を解くということ

結城浩さんの本にハズレ無し!!

著者の結城浩さんについてちょっとだけ紹介しておきましょう

結城浩さんが主に書かれる本のテーマは「プログラミング」「暗号」「数学」です
この分野に興味の無い人であればご存じないかも知れませんね

僕は昔からプログラミング関係の本をよく買っていますが、一番好きな作家さん(?)です。

 

結城浩さんと言えば、数学ガールのシリーズが有名です

他にも出されていて、僕も全てではないですが何冊も購入して持っています

等々

 

少なくとも僕が買った結城浩さんの本でハズレは1冊も無いです
1ページも無いと言ってもいいかも知れません!(ちょっと大ゲサ)

全部が全部分かりやすくて、面白くて、ワクワクするんです!!!

文章も読みやすいし、すんなり頭に入ってくる

気のせいかも知れませんが、紙の質感と言うか、手触りもなんかすごくいいんですよ
マジで!

ページの紙をなでているだけでも、なぜか「分かりやすい」という感覚になります(笑)
(これは僕がちょっとおかしいwww)

 

もうね、ハズレどころか全部大当たりです!!

 

その中でも僕が一番好きなのがプログラマの数学なんです

大ヒット作である数学ガールシリーズの影に隠れてしまってますけど、プログラマの数学も負けてないんですよ!
いや、数学ガールよりもプログラマの数学の方が楽しい!!

 

とか言いながら、数学ガールはまだ第1巻しか読んでないです・・・
第2巻以降は購入済みなので、この記事書いたらすぐ読みます!

 

 

でも真面目な話、結城浩さんの文章とか説明の仕方とか図解とかものすごく分かりやすいです
ライターさんもブロガーさんも、結城浩さんの本はきっと参考になると思いますよ

『プログラマの数学』の何が面白いの?

基本的に、僕は数学が好きなんですね

と言っても、数学デキるわけじゃないですよ
むしろ普通の人よりデキない方です

工業高校だったため、三年間で習った数学は数Iのみ

短大推薦入試の試験範囲である基礎解析は独学・・・
そもそも進学者は毎年300人中5人もいなかったからね

好きは好きだけど特別勉強したワケじゃないですし、もちろん人より詳しいわけでもない

プログラマという仕事をしているので、数学っぽい思考回路は必要になるっていうのはありますが、

まぁ、パズル的な感じで遊び感覚で楽しいんですよ

 

オイラーの贈り物も読んだけど、さっぱり分からなかった
虚数の情緒は分厚すぎて、読める気がしない

 

で、プログラマの数学についてですが、

  • そんなに数学数学してない
    でも数学的要素があるので、「勉強したー」っていう満足感得られてオトク(笑)
  • 難しい公式や数式がそんなに出るわけじゃない(少しはありますよ)
    数学ガールとかオイラーの贈り物とかは数式だらけでっせ(笑)
  • 図が多用されてる
    その図も省略せず、すごく丁寧です
    着目点は太字になってたりとか

    プログラマの数学

    こんな感じで整理されていて分かりやすい図が出て来ます

  • 「納得しない人のために」なんて節があったりします(笑)
    ※プログラマの数学/P228参照
  • 分かりやすい説明文と分かりやすい図のお陰で頭の中にイメージが湧いて理解が進む
  • 数学が好きじゃない人でも楽しめるようにクイズが散りばめられている
    • 何個かのオセロの石を放り投げた時、全ての石が同じ色になることを証明する(P102)
    • トランプを一列に並べる並べ方は何通りあるか?(P127)
    • 折り紙を何回折ったら月に届くか?(P176)

    ※クイズはこれら以外にもあります

 

やっぱり頭の体操なんですよ
知的好奇心も満たされるしね

ノートとペンを使って自分で計算しながら読み進めると、本当に面白いですよ!!!

冒頭に登場したクイズについて

ヒント:剰余を使います

解き方は、ぜひ本をご覧ください

 

広告




 

さいごに

さぁ! スマホは自宅に置いて、

 

この本と、ノートと、ペンを持って、

カフェに行ってみよう!!

この記事に出てきた本一覧

プログラマの数学以外にも、記事中には幾つかの本を出しましたので、以下に一覧を書いておきます。

 

 


 

広告
広告

プログラミングを楽しもう!

初心者向けのプログラミング教室やってます!
Skype or 対面で対応致します。
C言語、ExcelVBA、Scratch、Linux初歩の初歩といろいろなコースがあります。
※Rubyコース準備中!

小学生のお子さまにはScrachでプログラミングを楽しんで頂けます。

無料体験がありますので、是非お気軽にレッスンを受けてみてください。
プログラミングは楽しいですよ!

コメントを残す

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

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。