[書評] プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識【プログラミングおすすめ本】

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

矢沢 久雄 (著)
日経ソフトウエア
2007/04 発売

プログラムが動く際、コンピュータの中で何が起きているのか?

プログラムが動く際、コンピュータの中で何が起きているのかをそのまま説明している本です。 あえて例え話を使わずに、実際に何が起きているのかをひとつひとつ説明してます。

コンピュータ内でのプログラムの挙動について、例え話を用いてイメージをつかませる本を見掛ることはありますが、ここまで具体的に、かつ、初心者でもついていける程度の平易さで記述されている本はあまり無いように思います。

一例を挙げるなら、「CPUは人間に例えるなら頭脳です」といった例えはよく見掛けるかと思います。この例えはイメージが湧きやすいので、なんとなくわかった気にはなりますが、ではCPUが具体的に何をしているのか?という疑問は解消されません。

本書では、CPUが実行できるマシン語命令を「データ転送命令・演算命令・ジャンプ命令・コール/リターン命令」に分類して「CPUにできることが意外と少ない」ことを具体的に説明しています。

専門用語が次々と登場しますが、脚注 などで初心者にも分かるように用語の説明が加えられています。

プログラムが動作する仕組みが頭の中でイメージできれば、プログラミング能力や応用力が向上する

プログラムが動作する仕組みが頭の中でイメージできれば、プログラミング能力や応用力が向上します。具体例をひとつ挙げてげてみましょう。

プログラムの世界では、0.1を100回加えても10にはなりません。その原因は、コンピュータは10進数の計算を2進数に置き換えて計算することにあります。小数点数を10進数から2進数に変換する場合、10進数ではキリの良い数値であっても、2進数に置き換えるとキリが悪くなる数値が存在するのです。

例えば、10進数の0.1は、2進数に置き換えると0.00011001100…と、無限に小数点が循環する数値となります。そのため、0.1を100回加えるプログラムを実行させると10.000002…という結果が返るのです。

仕組みを理解しているプログラマなら何ということもない話ですが、仕組みを理解していないプログラマにとっては、こうした計算結果のズレは予想外の出来事と感じるでしょう。自分の書いたプログラムの問題点に気づくのに時間が掛かってしまうかもしれません。

「プログラムが動作する仕組みが頭の中でイメージできれば、プログラミング能力や応用力が向上する 」というのは、例えば上記のような話です。本書を読む前と後では、プログラムのコードを記述する際の意識が変化するかもしれません。

ちなみに、上記の「0.1を100回加える計算」の場合、「先に0.1を10倍することで1を100回加える計算に置き換え、その結果を後から10で割る」ことで、計算結果のズレを回避する対策などがあるそうです。

メモリとディスクの関係が頭の中でイメージできれば、プログラムのよるメモリ消費を節約する意識が生まれる

第4章から第5章では、メモリの物理的な仕組み、および、そのメモリが プログラム実行時にどのように利用されるのかを解説しています。そして、プログラムを記述する際に、何を意識すればメモリ消費を節約できるのかを紹介しています。

プログラムはディスクに保存されていますが、実行時にはメモリに読みだしてメモリ上で実行されます。そのため、できるだけメモリを消費しないプログラムの書き方をすれば、プログラムの実行速度も向上するというわけです。

具体的には、プログラム中から何度も呼び出す関数は、EXEファイルではなく独立したDLLファイルに置くほうがメモリ消費の無駄が少なくなることなどが紹介されています。

続きは書籍で…

このあと本書では、 以下のテーマなどで解説が続きます。

  • プログラマの開発したアプリケーション・プログラムが動作する環境として、 OSとハードウェアの組み合わせがどう影響するのか
  • プログラマが書いたソースコードがコンパイルされて、コンピュータが実行できるネイティブコードに変換されるとは具体的にどういうことなのか
  • アプリケーションを開発するプログラマは、実際にはハードウェア意識する必要はほとんどなく、実はOSに向けてソースコードを記述している

どの章にも、プログラミングに携わるなら一度は目を通しておきたい内容が含まれており、それらの内容がプログラミングの初心者でも分かるように解説されています。

専門的な解説もあってサラサラと読み流せる内容ではありませんが、最初の方で挫折しないで読み通していただければと思います。これからプログラミングに挑戦する初心者から、ある程度プログラミングの経験を積んだ中級者にまでおすすめできる良書です。

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

矢沢 久雄 (著)
日経ソフトウエア
2007/04 発売