「C実践プログラミング 第3版」

「C実践プログラミング 第3版」   Practical C Programming, 3rd Edition

スティーブ・オウアルライウン 著
望月廉司 訳
オライリー・ジャパン


 入門書としてみると、ボリュームもあり多少敷居が高いかもしれません。
(また、入門書1冊としては高い値段の部類になると思いますし)。

 が、書法についてやモジュール化、デバッグについて等、実際にCでプログラミングする上で必要なノウハウが記されており、入門に留まらず、も一つ二つ先のレベルまでサポートされています。 裏表紙から引用すれば

「Cの言語仕様だけでなく(プログラムの発想、設計、記述、手法、デバッグ、リリース、ドキュメント作成、保守、バージョンアップなど)Cプログラミングの全過程について解説」

ということで、実際かなり、よさそうです。

 ただ、こういう、より実践的な話では作者のノウハウや経験といったものが 他の(入門に力点を置いた)入門書に比べ大きく出てしまうため、 多少作者の好嫌や癖が大きく影響し、 すでに自分の方針や手法を持つ人には同意できない点がこまごまとあるかもしれません。
 一般的なことと作者の選択/好みが同一口調で語られるため、ですが、 このようなことは多かれ少なかれ、どの本でもあることですし、 何より、大規模のプロジェクトの経験をされている方のようで、 そういった前提に話をされているので、かなり納得でき、 全くの初心者が鵜呑みにしたとしてもそう弊害がないと思えます。

 多少気をつけるとすれば(別にこの本に限った話ではないけれど)、 作者のいう結論が何を前提にしているか意識し、 前提条件が変われば結論も変わることがある、 くらいのことは頭の片隅にあったほうが、 結論のみを頼りに前提の違う件を判断してしまう 失敗をさけれるかもしれません。

全体としては、かなり、いい本だと思います。

1999-06-09


 ちと記述でおかしいと思われるところがあったので一応書いておきます。

 パッと見た中で const についての記述がどうも C++の仕様と勘違いされているように思われます。

 #define での定数定義の代わりに const の使用を勧められているのですが、 C++では確かにその通りにできるのですが、ANSI-C では const は読み出し専用の変数になります。このため、

  const int NUM = 10;
  char buf[NUM];

とすると、(ANSI)Cではコンパイルエラーになります。
 #define の代わりになるものは enum を用いるしかなく

  enum {NUM = 10};
  char buf[NUM];

であれば、意図した通りにコンパイルされます。
 ただ、Cコンパイラによっては、C++の影響などでconstでの 定数定義が行えるものがあるのかもしれません (あと、もはや怪しい記憶なのですが、ANSI-Cドラフト時代にはconst での定数定義が行えたコンパイラがあったような気がします)。

1999-06-09