オレにもわからぬC言語(「K&Rを手にとって、俺の話を聞け」編)

思うところあって「プログラミング言語C」を図書館から借りてきた。学生時代にちょっとだけ読んだはずなのだが、それ以前に読んでいた ANSI 準拠前の旧版(文字通りの「K&R」版)にくらべてえらい記述量が増えていて読む気をなくしてしまい、内容はまったく覚えていなかった。

そんなわけでまともに読んだのは初めてなのだが、おもいのほか簡潔で逆に驚いた。なんかわりと普通に読める気がする…これをくどがっていたウン十年前の俺はどんだけ文章ギライなのかと思った。たしかにところどころ微妙な訳文があるような気がしないでもないけど、内容の把握に支障がでるほどではない(と思う)し。エロゲのテキスト表示をいつも最速設定にしているおいらに隙はなかった。

amazon の書評とかみるとだいたい「経験者には滋味深い内容だけど、素人にはおすすめできない」的なことが書かれていて、まあ確かにそうですよねーと自分でも思うのだけれど、逆に「ほんとにこれ素人にはおすすめできないんですかね?」と天邪鬼な気分もすこし出てくる。いまどきの初心者向けに説明し直すとしたらどこをどういう風に直すか? みたいなエクササイズはアリだと思う。とりあえず5章でポインタと配列の説明がいっしょくたになってるのを分ける。そんで、(構造体についての大ざっぱな説明の後で)ポインタに関する記述をもっと懇切丁寧にやるのがいいと思う。そりゃ宣言部以外では記法にほぼ交換性があるといっても、配列とポインタだと変数型に対する無茶振りの度合いが違いすぎる。ある型へのポインタを別の型へのポインタにキャストすることにより、変数型の縛りなどお構いなしのメモリアクセスを許してしまうのが C 言語の(人の言わない)最大の特徴だと個人的には思っている。変数型とか「オブジェクト」なんていうのは所詮プログラムインターフェースにおける人為的な「約束」に過ぎない。現実にはメモリの原形質にバイトデータが敷き詰められているだけであり、ポインタこそがその初源に至る道。ほかの高級言語だとほとんど禁呪扱いの思想であり、異端の言語として弾圧されているのもさもありなん。(そろそろ邪気眼が暴れそうなのでもうやめるw)

…まあ真面目な話、ポインタさえ何とかすれば、むしろプログラミング言語として構造はかなりシンプルな部類に入るんじゃないかなとは思うんです。