2014/07/08

Recent entries from same category

  1. Zenn で Twitter bot 作成入門を書いた。
  2. プログラマーのための新しい情報共有コミュニティ Zenn で本を書いてみた。
  3. Windows ユーザは cmd.exe で生きるべき 2020年版
  4. Let's Encrypt を簡単操作できる CLI、Lego が MyDNS に対応した。
  5. golang でメモ専用コマンド「memo」作った。

掟1

プログラムが時間を費やす箇所がどこにあるのかは知り得ない。ボトルネックは意外な場所で発生するため後知恵で批判してはならないし、ボトルネックがどこにあるか証明出来るまではスピードハックを入れてはいけない。

掟2

測定しよう。測定し終えるまでは、さらにはコードの一部分が残りのコードの支配的な量とならないならばチューニングを行ってはいけない。

掟3

凝ったアルゴリズムは、n が小さいときに低速となり、通常 n は小さい。凝ったアルゴリズムは大きな定数を有する。n は頻繁に大きくなり得ることを知るまでは凝ったアルゴリズムを得てはならない。 (n が大きくなる場合であっても、まず掟 2 を行いなさい)

掟4

凝ったアルゴリズムは単純なものよりもバギーであり、実装が非常に難しい。簡単なアルゴリズムだけでなく、単純なデータ構造を使用すること。

掟5

データが支配する。もし正しいデータ構造と組織的な物事を上手く選択したとすれば、アルゴリズムは殆どの場合自明となる。データ構造はアルゴリズムとは違いプログラミングの中心である。


Pike の掟 1 と 2 は Tony Hoare の有名な格言「早まった最適化は諸悪の根源である。」の言い換えであり、Ken Thompson は Pike の掟 3 と 4 を「疑わしいならばブルートフォースを使用すべきだ」と言い換えた。掟 3 と 4 は、the design philosophy KISS (Keep It Simple, Stupid)の具現。掟 5 は、The Mythical Man-Month で Fred Brooks が述べた。掟 5 は、多くの場合、「スマートオブジェクトを使うと愚かなコードを書く」に短縮される。

参照:

Rob Pike's 5 Rules of Programming

Posted at by | Edit