ロブ・パイクのプログラミングに関する5つのルール
概要
- プログラムのボトルネックは予想外の場所に現れる点
- 最適化は計測後に行うべきという原則
- 複雑なアルゴリズムは小規模データには向かないこと
- シンプルなアルゴリズムとデータ構造の重要性
- データ構造選択がプログラミングの中心である点
プログラム最適化に関するPikeのルール
-
ルール1:プログラムのどこで時間がかかるかは予測困難
ボトルネックは意外な場所に現れがち
速度向上の工夫は、実際に問題箇所を特定してから実施 -
ルール2:必ず計測してから最適化
速度向上のための調整は、計測データに基づき実施
一部のコードが全体を圧倒する場合のみ最適化を検討 -
ルール3:複雑なアルゴリズムは小さいnでは遅い
nが小さい場合はシンプルな方法が有効
大きなnの場合でも、まず計測(ルール2)を優先 -
ルール4:複雑なアルゴリズムはバグが多く実装も難解
シンプルなアルゴリズムとシンプルなデータ構造を推奨 -
ルール5:データ構造が最重要
適切なデータ構造選択と整理でアルゴリズムも自明となる
プログラミングの中心はアルゴリズムでなくデータ構造
関連する有名な格言・設計哲学
- ルール1・2はTony Hoareの「Premature optimization is the root of all evil(早すぎる最適化は諸悪の根源)」の再表現
- ルール3・4はKen Thompsonによる「When in doubt, use brute force.(迷ったら力技でやれ)」に該当
- KISS原則(Keep It Simple, Stupid)の具体例
- ルール5はFred Brooksの「The Mythical Man-Month」で言及
- 「write stupid code that uses smart objects(賢いオブジェクトを使った単純なコードを書け)」と要約されることも多い
まとめ
- 最適化は計測と根拠に基づく判断が重要
- シンプルさとデータ構造重視の設計思想
- 歴史的な名言や原則に裏打ちされたプログラミングのベストプラクティス