スティーブ・オウアルライウン 著
望月廉司 訳
オライリー・ジャパン
「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