2008年8月31日

プログラミングの力を生み出す本

知人がお勧めしていた『プログラミングの力を生み出す本』を読みました。

 

読みはじめてすぐに、この本は異色なプログラミングの入門書であることがわかりました。普通のプログラミングの入門書は「プログラミングとは」という序論が終わったら hello, world 的なものからコードを書き始めるものが多いと思うのですが、本書の導入はまるっきり異なります。1章の目次は以下の通りです(カッコ内は私のコメント)。

1章 プログラミングへの導入
プログラミングことはじめ(なぜか例が x-y プロッタ)
プログラミングの構造(なぜかフローチャート登場)
データ(整数、文字列、論理型など)
プログラミング言語の構造(コンパイラ、リンカの説明とか)
x86 CPU の概要(レジスタの説明とか)
GCC と GNUPLOT(なぜか GNUPLOT が導入に登場...)
GNU アセンブリ言語(GAS の概要)
GNU デバッガ (GDB の概要)

2章からは x86 のプログラムをアセンブリ言語で書き始めます。ここでも hello, world 的なものは一切登場しません。ビルドしたプログラムを GDB 上で命令単位でステップ実行して、レジスタの変化を見るというスタイルで解説が続きます。2章の目次は以下の通りです。

2章 アセンブリ言語によるプログラミング基礎
CPUとレジスタ
メモリとデータ型
フラグ
条件判断
論理演算
ループ
配列
アドレッシング
その他の命令
スタック
C言語とのリンク

2章の序盤では、 GDB を使ってステップ実行する過程が丁寧に解説されています。自分で実行してみなくてよいところが親切です。GDB のチュートリアルとしても役立ちそうです。「スタック」の説では関数呼び出しがどのように行われるか(コーリングコンベンション)について解説されています。

3章はC言語の話、4章はプログラムの例の話です。これらは、すでにある程度 C言語でプログラミングの経験がある人にとってはそれほど興味深い内容ではないと思います。

巻末には付録で x86 の命令表がついています。すべての命令が網羅されているわけではありませんが、 gcc -S -O0 が出力しそうな命令はカバーされているのでリファレンスとして役立ちそうです。

まとめ

異色のプログラミング入門書でした。説明が駆け足な点も見受けられるので、本当のプログラミング入門者が読むのに適した本かどうかはやや疑問ですが、gcc が出力する x86 用のアセンブリコードを読むためにアセンブリ言語を学びたい、という目的にちょうどいい本なのではないかと思います。

プログラミングの力を生み出す本―インテルCPUのGNUユーザへ
橋本 洋志 松永 俊雄 冨永 和人 石井 千春
オーム社
売り上げランキング: 261702