プログラミング作法

「プログラミング作法」の著者の一人,カーニハンは,プログラミング言語Cの著者で,C言語の開発者である半分ぐらい伝説の人となっている.そのような人の書いた本なので,プログラミングに関わる人なら,一度は目を通しておくべき本ではないだろうか.

「プログラミング作法」は,この前,読んだ「珠玉のプログラミング(id:hcr:20050117)」と同系統の本で,アルゴリズムとデータ構造から,最適化といった内容が書かれている.半分ぐらいは,重複した内容ではあるけれど,「プログラミング作法」の方がより網羅的で,少し教科書っぽい堅めの雰囲気がある.「珠玉のプログラミング」で感じをつかんで,「プログラミング作法」で網羅的に理解する,というのがいいのではなかろうか.

この本では「プログラマに速度と安全性の選択をさせてはいけない」という言葉が印象に残っている.メモリ操作関連の関数で似たような機能を持つものが二つ(memcpyとmemmove)あり,前者は性能重視で,後者は安全性重視となっている.そのような場合,プログラマに選択させるのではなく,安全な関数(memmove)のみを使うべきであるということらしい.

一度作ったコードは,その後,予想より長いこと利用され続けることは珍しくないし,そのような場合にどのような使い方がされるか,などということは,作っているときにはまったく分からない.安全性を犠牲に性能を重視した実装を利用すると,将来的によくわからないバグが発生する可能性が高くなる.そのため,常に安全性を重視した実装を利用するべきである,ということか.