kuwana-kbの開発/学習ブログ

プログラミング、クラウドインフラのWeb開発/学習ブログ

プログラムはなぜ動くのか 書評

「プログラムはなぜ動くのか 第2版」を読み終えたのでまとめます。

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

本のざっくりとした紹介

この本はメモリ、OS、ハードウェアといった低レイヤーの観点から、 プログラムをクリックしてから実際に動作するまでの流れを詳しく解説した本です。
流れを追っていく中で、エンジニアにとって馴染みのある2進数やポインタ、コンパイルといった仕組みを、 低レイヤーの観点からわかりやすく解説してくれています。

なぜ読んだか

プログラミングを学んでいく上で避けて通れないものの1つに、「ポインタ」があります。 ポインタでググると「特定のメモリ領域を表現する」といった内容で、C言語を用いた例がよく見受けられます。
プログラミング初学者の私としては、C言語をそもそも知らないし、ハードウェアの構造もよくわかっていないので、 解説を読んでもしっくり来ることがありませんでした。 本書を通じてポインタの理解を深めることが第一の目的でした。

印象に残った内容

読んだ中で特に印象に残った内容を2つ挙げます。

1つめはポインタの型宣言について。

形式として覚えていた型宣言にもちゃんと理由があったことに驚き。

2つめは低レイヤーでの抽象化について。

プログラミングにおいても様々な手法で抽象化を試みますが、低レイヤーでも抽象化がなされていました。 この抽象化によって我々エンジニアはハードウェアやシステムコールを意識することなくプログラミングに集中できているのですね。

この本の良いところ

  • プログラマ(エンジニア)が読むという前提で書かれているので、必要以上にハードウェアに寄った専門的な単語がなく、読みやすい本でした。
  • 解説の中にC言語アセンブリ言語が登場しますが、言語の解説も入っているので問題なく理解できました。(※)
  • 2進数やポインタ、コンパイルといった仕組みを低レイヤーの動作を含めて理解を深めることができました。

本書を通じて当初の目的であったポインタの理解に加え、今まであやふやだった低レイヤーの知識を補完できました。 この日経ソフトウェアさんが出版する「なぜ」シリーズは今回で3冊目ですが、どれも安定してわかりやすいのでおすすめです。

ポインタがよくわからない…という方やプログラムの低レイヤーが気になる方はぜひ読んでみてください。