2022年06月17日に初出の投稿

Last modified: 2022-06-20

添付画像

"best textbook c programming" といったキーワードで検索して、C++ のテキストを一緒に紹介しているページは除外して、C のテキストだけを紹介している6ページか7ページていどを見た。そこで列挙されている書名(全く同じ書名で別の本がありえるし、実際に K&R は初版と第2版を別の順位で推薦しているページすらあった)だけで簡単な統計を作ると、上記のようになった。

予想通り、O'Reilly Media から出ている "Head First C" が1位である。この "Head First" シリーズは、他にも Python などで推薦されていることがある、初心者向けには面白くできた本が多い。ただし、どちらかと言えば「プログラミング」の手順とか考え方を同時に教えるような学校教材と言った方がいいものであり、何らかの開発経験がある人には不要だろう。あるいは、僕らのようにプログラミングや開発言語を他人に教えるような立場の人間が参考に敢えて読むような本である。

第二位の "The C Programming Language" は、もちろん有名な K&R であり、当たり前だが手に入りやすい第2版のことだ。初版を別の順位で勧めているページは、他の推薦書についても選択の基準が少し変わっているため、初版はいまさら読む必要はないだろう。当然だが、有名な本で評価も昔から高いため、"Head First C" と共に翻訳が出ている。日本語訳の『プログラミングC』は、訳した石田晴久氏によると、翻訳の初版を出した1981年から1989年の8年間で13万部を売り上げたという。コンピュータ関連の技術書としては空前のベスト・セラーだ。そして、それから30年以上が経過した今日でも大型書店の棚には必ず置いてある現役の定番テキストである。もちろん、準拠している規格は古いままではあるが、正直なところ、これを読んでから C17 などに知識を自力でアップデートできない無能が C で実装するのは危険だから止めた方がいいとすら言える。

3位の "C Programming: A Modern Approach" は、"modern approach" とは銘打っているが、最新の第2版が1996年の発行だから、もう25年くらいは経った本だ。それでも、ソフトウェア・エンジニアリングの観点を導入したり、C のトリッキーな扱い方を教えないよう排除するといった、これまでのプログラミング言語のテキストにありがちなホビーっぽさを払拭して手堅い内容になっており、これはこれで "modern" と呼んでいいアプローチの本だと言える。

4位に、Herbert Shildt の "C: The Complete Reference" が入っている。僕はこれは読んだことがないので、同じ著者の "C++: The Complete Reference" の冒頭に入っている、「C++ のサブセットとしての C」という解説しか知らないのだが、丁寧に書かれていて好感が持てる。アメリカの、1,000ページを超えるテキストを書く著者のバイタリティーもさることながら、その好奇心や熱意や道具に対する愛着のような気分が感じられて、日本でいえば『大熱血! アセンブラ入門』のような本と似た、良い意味での威圧感を覚える。こういう本を前にして武者震いするようでなければ、ソフトウェア・エンジニアリングとかシステム・アーキテクチャ言うべきスケールのアプリケーションを設計するような仕事はできないのだろう。

その他にも、僕が目を通した何冊かのテキストが紹介されている。でも、これまでに紹介した四冊の評価が圧倒的と言ってもよく、他の候補は「良い本」かもしれないが「ベスト」として他人に勧められるかどうかは自信がないということなのだろう。正直なところ、アメリカで教科書として出版されるくらいの本は、まともな出版社から出ていれば、或るていどの査読をかけているだろうし、年月もかけているだろうし、それなりに教育やコンサルティングや著述で実績のある人物に書かせている筈だ。したがって、「良い本」であることは最低限の品質だと言ってもいいのだろう。そこを超えていくか、あるいは古典的な著作物として他に読むべきものがなかったという事情で売れたという経緯でもない限り、なかなか多くの人に認められるというのは難しいのだろう。

ちなみに、ここでは列挙されていないが、僕は個人の経験として "Unleashed" シリーズを何冊か読んでシリーズの編集者の力量を評価しているので、"C Unleashed" は読んでみたい。古本ですら6,000円もするので手が出せないけれど、チャンスがあれば目を通してみよう。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook