ロブ・パイクによるプログラミングの5つのルール

出典 http://users.ece.utexas.edu/~adnan/pike.html

  • ルール1 プログラムのどこで時間を使うようになるかを事前に知ることはできない。 ボトルネックは意外な場所に発生するので、どこにボトルネックがあるかを証明するまで、とやかく言ったり速度にハックしないように

  • ルール2 測定せよ。 測定し終えるまで速度のチューニングをしないこと、さらにコードの一部が他の部分よりも圧倒的であるときを除いて。

  • ルール3 凝ったなアルゴリズムはnが小さいときは遅い、そして大抵の場合でnは小さい。凝ったアルゴリズムは大きな定数を持つ。頻繁にnが大きくなると分るまでは、凝ったことをしないこと。(そしてnが大きくなる場合でもルール2をまず適用すること)

  • ルール4 凝ったアルゴリズムは単純なものよりバグが入りがち、そして実装難易度が高い。 単純なアルゴリズムだけでなく単純なデータ構造を使うこと。

  • ルール5 データが最も重要である。 正しいデータ構造と編成を選択すれば、アルゴリズムは自明のものとなります。アルゴリズムではなく、データ構造こそがプログラミングの中心です。

パイクのルール1と2はトニー・ホーアの有名な格言「早まった最適化は諸悪の根源である」の言い換え。ケン・トンプソンの「疑わしい場合は力技でいけ」はパイクのルール3と4の言い換え。 ルール3、4はデザイン哲学KISSの例。ルール5は以前フレッド・ブルックスが「人月の神話」で述べた。 ルール5はよく「スマートオブジェクトを使う愚かなコードを書く」と略される。


ロブ・パイクって誰やねん、という人はWikipediaの彼のページをどうぞ。最近だとgolangを作った人です。

UNIXプログラミング環境 (海外ブックス)

UNIXプログラミング環境 (海外ブックス)

プログラミング作法

プログラミング作法