書籍購入:『C言語本格入門 基礎知識からコンピュータの本質まで』

故あってC99以降に対応したC言語の入門書を探している(4回目)。自習用として問題なさそうなやつ。あと、プログラミング初心者向けの冗長な内容ではなく、プログラミング経験者でも読み進めやすい簡潔な内容のもの。

ぱっと見だが、難易度の面で、少しだけ評価が難しい本だと感じる。

うーん、「C言語でプロダクション向けのコードを書くことになった人」向けの副読本、だろうか?

プログラミング未経験者は、もっと平易なC言語の入門書で学習して、何かしらの「実用的なCLIツール」の劣化コピーを2~3個ぐらい書いてから、本書を手に取った方がよいだろう(それでも当初は手に余るかもしれない)。

プログラミング経験者でも、モダンな高水準言語での経験しかないようならば、他のC言語の入門書と併用した方が安全だろう。

C言語C++*1で何か実用的なものを書いたことがある人なら分かると思うのだが、一般的な高水準言語とは異なる点として、C言語によるプログラミングでは「言語という抽象化層」に穴を空けて下の層を覗き込むことが多々あるし、また下の層の事情を知ることでCプログラミングのレベルが上昇することもある。特に変数と記憶領域(メモリ)がそうだ。

「言語という抽象化層」に穴を空けられる点がC言語の特徴であり、メリットなのだが(でなければOSやデバイスドライバファームウェアの記述言語になれなかっただろう)、反面それがCプログラミングの難しさというデメリットの主要因ともなっている。

本書ではそういう「C言語の面倒くさい部分」も扱っている。お仕事でC言語を使う際に直面する現実でもあるので、C言語でプロダクション向けのコードを書くならば、本書を手に取ったほうがよいだろう。

ただし難易度に注意すること。本書の難しさって、C言語の難しさではなくて、プログラミング言語という抽象化層の下に隠されている「コンピュータ」そのものの面倒くささに起因する部分が多いので、プログラミングのベテランでも下位層の知識が不足していればつまづく可能性があるように思う。

追記:それにしても『Cプログラミング専門課程』復刊してくれないだろうか?

*1:特に古典的なスタイルのC++のこと(モダンC++ではない)。