想定する読者層は以下の通りで、 プログラムの動作を深く理解したい人向けです。
大学学部生の講義で使うことを目的にして書いた本です。 じっくり腰を落ち着けて読むタイプの文章となっています。
基礎の基礎から説明していますので、 学生の教科書として最適です。 大規模なプログラミングで必須な概念を説明していますので、 アプリケーションソフトウエアのプログラマにおすすめです。 また、割込みやシステムコールハンドラについても解説していますので、 組み込みソフトウエアのプログラマにもおすすめです。 特に組み込みソフトウエアのプログラマにおいては、 本書の内容の理解は必須と考えています。
非常に個人的な見解ですが、 プログラミングに従事している人は全て、 最低限の知識として 本書に書かれている程度の事は理解していて 欲しいという希望を持っています。
本書の欠点は値段が少々高い点です。 正直いえば、3500円以下に設定したかったのですが...
本書の特長は、プログラミング上の各種の基礎概念を完全に理解可能とした点です。 この目的のために、C言語で書かれたプログラムを実際の CPU は どのように実行するかを説明をしています。 具体的に言えば、C言語での各種の概念がどのようにしてアセンブリ言語の 形で実現されるかを詳細に示しました。
本書を読むことで、これまで分かりにくいとされてきた、 以下の各種概念が非常にすっきりと整理した形で理解できるよう工夫しています。
2の補数表示, IEE754浮動小数点, ポインタ, バッファオーバーフロー, システムコール, 関数, 再帰呼出, 局所変数, スタック, malloc / free, メモリリーク, setjmp / longjmp, マルチスレッド, 相互排除, モニタ, デッドロック, 割込み, 非ブロッキング並行データ構造
本書のもうひとつの特長は、例え話やイメージ図だけに頼った 安易な説明は一切行なっていない点にあります。 例え話やイメージ図では分かったような気にはなりますが、 真に理解するには不十分な手法と考えています。 本書では、完全なサンプルプログラムに基づき、正確に理解できるとともに、 考える力がつくように工夫しています。 最初は取っつきにくく難解に見えるのはこの理由です。
しかし全く図を用いていないわけではありません。 理解を助けるために150を越える図版を用いています。 本文の説明と図版の双方でより正確な理解を可能としています。
プログラムコードは総計1万行近くありますが、 紙面の都合で全てを掲載できませんでした。 プログラムファイルの一部だけしか 掲載できなかったものも多くありますし、 1つのセクションを丸ごと掲載の見送りしたものもあります。
しかし掲載できなかった部分の全て、すなわち、 全プログラムリストと掲載を見送ったセクションの PDF ファイル、 各プログラムのソースコードファイルの全てを、 本書の購入者は森北出版のウェブサイトから無料でダウンロードできるように しています。 (ダウンロードページは 関連リンクを参照)
また、講義を担当される先生の講義資料作成の便宜を図るために、 本書で使用した図版も合わせて無料でダウンロードできるようにしています。
エミュレータソフトウエア (無料のフリーソフトウエアで Windows 用 や Linux 用などあり) SPIM を入手すれば、本書のプログラムを動作させることが可能です。 課題で作成したプログラムを SPIM で動作確認を行なったり、 サンプルプログラムを改造するなど、 学習に大きく役立ちます。 (SPIM の入手方法は関連リンクを参照)
CPU に MIPS を取り上げたのは 単純明快な命令体系にあります。 MIPS と比べて Pentium は複雑なため、 命令体系の理解にエネルギーが削がれてしまい、 本書で学ぶべき諸概念の理解の妨害となるからです。 本書の内容が理解できれば、 Pentium を対象とする場合でも根元は同じなので、 本書で学んだ知識が無駄になることは決してありません。
PCという狭い世界に限定すれば確かにPentiumは優勢ではありますが、 PC以外の世界ではMIPSは広く使われている 非常に重要なプロセッサのひとつです。
数値の内部表現や制御構造などの古典的な基礎から、 メモリ割当て、マルチスレッド、スレッド同期、 割込み、非ブロッキングデータ構造まで、 非常に幅広い内容を網羅し解説しています。 ここまで幅広い内容を取り扱う類書は他にはないと思います。