読者です 読者をやめる 読者になる 読者になる

矢沢久雄『プログラムはなぜ動くのか』日経BP社、2001年10月

■内容【個人的評価:★★★−−】
○第一章「プログラマにとってCPUとは何か」

  • CPUは、最終的にマシン語となったプログラムの内容を解釈して実行する部品です。
  • CPUの内部はレジスタ、制御装置、演算装置、およびクロックの4つの要素から構成されています。
  • 一つのCPUの内部には20〜100個ほどのレジスタがあります。制御装置は、メモリー上の命令やデータをレジスタに読み出し、命令の実行結果に応じてコンピュータ全体を制御します。演算装置は、メモリーからレジスタに読み出されたデータを演算する役目を持ちます。クロックは、コンピュータが動作するタイミングとなるクロック信号を発生させるものです。
  • パソコンで通常メモリーと呼ぶのはメイン・メモリーのことです。CPUと制御用チップなどを介してつながっていて、ここに命令やデータを格納します。
  • プログラムが動き出すと、クロック信号に合わせて、制御装置がメモリーから命令やデータを読み出します。制御装置が命令を解釈・実行するときに、演算装置でデータが演算され、その結果に応じて制御装置がコンピュータ全体を制御します。制御ということばを使うと、難しいことのように感じてしまうかも知れませんが、データ演算以外の処理のことを制御と呼んでいるだけなのです。メモリーやディスク媒体との入出力、キーボードやマウスからの入力、およびディスプレイやプリンタへの出力なども、制御なのです。
  • 先ほど挙げたCPUの4つの要素の中で、プログラマが意識しなければならないものは、レジスタだけです。

○第二章「データを二進数でイメージしよう」

  • ICが持つすべてのピンは、直流電圧0Vか+5Vのいずれかの状態になっています。つまりICのピン1本では、2つの状態しか表せないのです。
  • 論理演算をマスターするコツは、2進数が数値を表していると言う考え方を捨て去ることです。数値ではなく、グラフィックスのパターンや、スイッチのON/OFFを表していると考えてください。

○第三章「コンピュータが小数計算を間違える理由」

  • 2進数で表された小数点数を10進数に変換する方法がわかれば、コンピュータが計算を間違える理由を理解できます。先に答えをいってしまうと、10進数の小数点数には、2進数に変換できないものがあるからです。たとえば、10進数の0.1は決して2進数で表せません。
  • コンピュータが計算を間違える原因のひとつは、小数点数を浮動小数点数で取り扱っているからです。この問題を回避する方法を二つほど紹介しておきましょう。
  • 一つの回避策は、間違いを無視することです。もう一つの回避策は小数点数を整数に置き換えて計算することです。

○第四章「四角いメモリーを丸く使う」

  • モリーを丸くする前に、物理形状のまま四角く使う方法を説明しておきます。そのために使われるプログラミング上のテクニックは配列です。配列とは、同じデータ型の複数のデータがメモリー上に並んだものです。配列の要素となる個々のデータは、先頭から通し番号で区別され、この番号のことをインデックス(添字)と呼びます。
  • 配列がメモリーの使い方の基本となる理由は、配列がメモリーの物理的な構造そのものだからです。

○第五章「メモリーとディスクの親密な関係」
○第六章「自分でデータを圧縮してみよう」
○第七章「プログラムはどんな環境で動くのか」

  • マイクロプロセッサは、ソースコードコンパイルしたネイティブ・コードを解釈している。
  • アプリケーションからOSへの命令の仕方を定めたものがAPIApplication Programming Interface)です。WindowsUnixAPIは、プログラムから呼び出し可能な関数セットとして提供されています。APIとして提供されているのは、キー入力、マウス入力、画面出力、ファイル入出力などのように、周辺装置と入出力を行う機能です。

○第八章「ソース・ファイルから実行可能ファイルができるまで」
○第九章「OSとアプリケーションの関係」
○第十章「アセンブリ言語からプログラムの本当の姿を知る」
○第十一章「ハードウェアを制御する方法」
○第十二章「コンピュータに考えさせるためには」

  • プログラムを使う目的は、大きく二つに分類できます。一つは、人間が道具として使うためです。もう一つの目的は、人間の思考過程をプログラムによって代行することです。

■読後感
こうした、そもそもの本質説明の書はプログラマにとって重要である。何が起きているのかわかって初めて自分が操ることができる。
ただし、分かりやすかったかというと、なかなか難しい本でもあった。
改めて、個々のプロセスについて確認する際に手元においておくべき本だろう。