C言語の核心を知りたいか?
私の一番好きなC言語の本がこれです。
中級から上級へのステップアップに最適!
真面目なタイトルとは裏腹に、ユーモアに溢れた楽しいプログラミング本です。
ノリはやや(かなり?)軽いですが、C言語の核心部分がよく分かり、中途半端だった理解を一気に補強できます。
言語仕様の穴が分かる
本書の大きな特徴として、Cの言語仕様を細かく検証している点があります。
つまりC言語の設計ミスを指摘して、注意点を警告してくれます。
今でこそ有名なC言語ですが、最初は仲間内だけで使うために作られました。
作者デニス・リッチー氏らは、当時まさか世界中に広まるとは予想せず、かなりフリーダムに開発しています。
そんな事情があり、手抜きや検討不足っぽい仕様が結構存在します。
例えば…
- breakの紛らわしさ(これで全米の電話が止まった…)
- 「*」が色々な事に使われちゃう
- 演算子の優先順位が少し変
- キーワードの妙な使い方(staticスコープとか)
などなど、どれも混乱しやすい事ばかりです。
本書はこうしたC言語の穴を、とにかくジョークとユーモアを連発しながら、解説してくれます。
デニス・リッチー氏(Cの作者)に敬意を払い、一方で皮肉たっぷりな内容は必見です。
メモリを制してレベルアップ!
本書は、メモリ関係、特にポインタと配列の解説が充実しています。
この2つは全くの別物なのですが(Cの仕様のせいで)たびたび誤解されて来ました。
その辺の詳細も含め、メモリ内部を分かりやすく図解してくれます。
私は色んなC言語本を読みましたが、本書のメモリ図解は飛び抜けて秀逸でした。
例えば、
char a[] = “orange”; の a[2] と
char *a = “orange”; の a[2] が
メモリ内部では全く違う事実を、ビジュアルに見せてくれ、すんなり納得できます。
他にも面白かったのは
apple[ i ][ j ] という記述では、一見で 正確な型 を特定できない話です。
具体的には、下の宣言はみな apple[ i ][ j ] でアクセスできます。
int apple[23][12];
int * apple[23];
int ** apple;
int (* apple)[12];
この理由も、本書のビジュアルな解説を読んだ結果、スッキリ理解できました
こんな風に、まだまだメモリにまつわる面白い話が沢山載っています。
(スタック、ヒープ、仮想メモリ、メモリリークなどなど)
ネタの嵐に震えるがいい
そして、忘れてはいけないのが遊び心です。
本書には随所に、プログラミングに関するネタ話が散りばめられています。
これが最高です。とにかく笑えます。
著者のプログラミングへの愛情がひしひしと感じられます。
- 宇宙ロケットを落としたバグの話
- ある人だけメールが届かないバグ
- 2000万ドルのバグの正体
- 読み難いソースの国際大会
- コンパイラの妙なエラーメッセージ
- タイムリープした?プログラム
- プログラマはクリスマスとハロウィンを区別できない?
プログラマなら上のリストを見て、そそりませんか?
どれも本書に載っている面白ネタ話です。
私は講義中に本書のネタをよく使いますが、学生の受けが大変良く、いつも感謝しています。
文句なしにC言語の超名著
ここまで話したように、本書は常識的な技術書ではなく、他に類を見ない型破りな一冊です。
ぜひ読みながら、C言語とユーモアのセンスを磨いて欲しいと思います。
とりあえずC言語の基本が分かれば、だいたい楽しめます。
タイトルの通り、エキスパートへのガイドブックになる名著の中の名著です。
ちなみに私はボロボロになるくらい読みました。
その他いろいろ
翻訳もノリノリである
本書は翻訳の素晴らしさも魅力です。
著者の軽いノリを上手く訳してあり、各種ジョークもすんなり分かります。
またそれに飽き足らず、色々ツッコミを入れてくれます。
副題の謎
原書の副題は 「 Deep C Secrets 」となっています。
これって、C と Sea をかけたのかな?
価格の謎
絶版につき、ユーズドがメインの入手手段ですが、なぜか価格の波が大きいなー。
ちなみに定価は3355円(税込)なので、4000円以下なら迷わず買い!