Rob Pikeのプログラミング 5つの法則 (翻訳)

夜更けに翻訳、たまたまTLを回ってきたRob Pike先生の言葉を翻訳してみました。

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

最近英語に関わっていないのでたまに翻訳して英語に関わるというメソッドです。

Rob Pikeのプログラミング 5つの法則

Rule 1. プログラミングで時間がかかっている場所を推測してはいけない。ボトルネックは思いもよらない場所で起きる、そのためボトルネックの場所が特定されるまで後で推測しようとしたり、チューニングを施そうとしてはいけない。

Rule 2. 計測せよ。計測し、コードの一部分にかかる時間が残りの部分の時間よりも上回らない限りチューニングをしちゃいけない。

Rule 3. n(データ数)が小さい時、Fancyなアルゴリズムは大体遅い。そしてnは大体小さい。Fancyなアルゴリズムは大きな定数を持つ。nが頻繁に大きくなることがわからないのであれば、Fancyなアルゴリズムに手を出しちゃいけない。(たとえnが大きくなったとしても、Rule2を最初に行うこと)

Rule 4. Fancyなアルゴリズムはシンプルなそれよりもバグりやすく、実装するのが難しい。シンプルなアルゴリズムとシンプルなデータ構造を使うこと。

Rule 5. データ構造を理解しよう。もし正しいデータ構造とデータの体系化を選べるのであれば、アルゴリズムは常に自明になるだろう。プログラミングの中心はデータ構造であり、アルゴリズムじゃない。

PikeのRule1とRule2はTony Hoareの名言、「未熟な最適化は諸悪の根源」という言葉を言い換えたものである。
Ken ThompsonはPikeのRule3とRule4を「疑わしいなら力ワザでやれ」という言葉に言い換えている。
Rule3とRule4はデザインの哲学 Keep It Simple Stupid の実体である。Rule 5は人月の神話を書いたFred Brooksによって、言い換えられていて、「smartなオブジェクトを使ってつまらないコードを書こう」と短くなっている。

感想

んで、訳してから知ったんだけど、既にwikipediaで翻訳されてた。

http://ja.wikipedia.org/wiki/UNIX%E5%93%B2%E5%AD%A6

∑(゚Д゚)ガーン