あかりんパパのブログ

ほぼ雑記です

本「プログラムはなぜ動くのか」の感想

実は読み終わって大分時間がたっていたりします。たしか、一か月前ぐらいには読み終えていたと思います。ちょうど、twitterで「CPUの創りかた」を読み始めるとか宣言していた時期ですね。

 

ブログのネタはいくつかあるのですが、なかなか書く時間がないという。まー、「取らない」の間違えで、言い訳ですね。別に言い訳なんてしなくてもいいんですけども。垂れ流しですし。。。

 

本題

さて「プログラムはなぜ動くのか」ですが、結論からいうと、この本を読んだだけではプログラムがなぜ動くのかはわからないと思います。

Amazon CAPTCHA

※ちなみに僕が読んだのは第1版です。

 

「〇〇〇はなぜ×××か」シリーズにしたくて、このようなタイトルになっただと思います。この本はプログラムが動くうえで必要な機器・機構とその仕組みの説明が割と平易な文章で紹介されています。たとえば、CPU、メモリ、OSなど。

これらの仕組みを1つ1つ理解して、なるほどだから動かくのか、と読者の努力次第で到達できるのとは思います。どちらかというと「どのようにプログラムは動くのか」という名前のほうがしっくりくる気がします。

 

なかには浮動小数点数(コンピュータで少数を取り扱う仕組み)や圧縮ファイルに関するものなど、直接的に「プログラムがなぜ動くのか」に関係のない章もあります。ただ、悪い本かというとそうではないと思います。浮動小数点数の仕組みなどは、不勉強な僕にとってはとても有益でしたし、コンピュータ関連を生業にする人はどれも知ってて損はない(知っているべき)知識が平易な言葉で説明してあります。

 

ただし、多少プログラミングをしたことがある方を想定にしている気がします。IT用語が説明なしでバシバシ使われているという意味で。そういう意味では、この本は駆け出しのプログラマが、いわゆるソフトウェアの「低レベルなレイヤー(コンピュータの物理的な側面に比較的近い概念たち)」の知識を拡充するためのきっかけになる本だと思す。そして、駆け出しであっても全くの初心者が1人で読むのは少しつらいと思うので、一人で読む場合は、研修が終わってからか現場に出て数か月たった後に読むとちょうど良い内容になっていると思います。

各章はCPU、メモリなどわかりやすくテーマが決まっており、テーマをより深く理解するための、はじめの入り口になっているという感じの本です。良くも悪くも広く浅くソフトウェアの「低レイヤー」の内容をそこそこ網羅した本だと思います。ある程度経験のあるプログラマであれば、既知の内容が多いと思います。たとえば、僕は2進数の章とかは、ほとんど読み飛ばしに近かったと思います。一応、プログラマにとっては復習や知識の確認にはなると思います。各章のタイトルを見てある程度関連する技術や概念、名詞が思い浮かぶ人は読まなくていいと思います。各章のはじめにクイズ(?)があるので、それだけささっとやってみて腕試ししてみるのもいいかもしれません。

 

各章は分離されており、その章ではじめて出現する用語などは都度解説があったような気がします(なんとなく、各省の原稿をバラバラに時間をおいて執筆しただけのような印象もあります。そんなことないとおもうけども)。そのため、技術書にしては珍しく、気になる章だけ読むという読み方が許される本です。

 

僕が購入したきっかけは、疎かにしていた浮動小数点数の理解とOSがどのようにプログラムを実行するかを理解(確認)するために購入しました。浮動小数点数についてはとてもよかったです。これをきっかけにより踏み込んだ知識も仕入れることができるようになったと思います。OSに関しては、もう少し踏み込んだ内容がほしかったなーといったところですが、ある程度は参考になりました。OSの理解についてはいつ読むのを再開できるかわからない「詳解Linux カーネル」を読むまで取っておこうと思います。

 

参考のため各章のタイトルだけを引用させていただきます。

「プログラムはなぜ動くのか」目次

第1版

プログラマにとってCPUとはなにか
データを2進数でイメージしよう
コンピュータが小数計算を間違える理由
四角いメモリーを丸く使う
モリーとディスクの親密な関係
自分でデータを圧縮してみよう
プログラムはどんな環境で動くのか
ソース・ファイルから実行ファイルができるまで
OSとアプリケーションの関係
アセンブリ言語からプログラムの本当の姿を知る
ハードウェアを制御する方法
コンピュータに「考え」させるためには

第2班

プログラマにとってCPUとはなにか
データを2進数でイメージしよう
コンピュータが小数点数の計算を間違える理由
四角いメモリーを丸く使う
モリーとディスクの親密な関係
自分でデータを圧縮してみよう
プログラムはどんな環境で動くのか
ソース・ファイルから実行可能ファイルができるまで
OSとアプリケーションの関係
アセンブリ言語からプログラムの本当の姿を知る
ハードウェアを制御する方法
コンピュータに「考え」させるためには
レッツ・トライC言語!

引用元

https://www.amazon.co.jp/dp/toc/4822281019/ref=dp_toc?_encoding=UTF8&n=465392

https://www.amazon.co.jp/dp/toc/4822283151/ref=dp_toc?_encoding=UTF8&n=465392

 

結論

プログラムを書き始めて2~3か月の駆け出しのプログラマにとってはとても良い本。