UNIX哲学
余計な出力をすべきではない。他の開発者にとってただ邪魔なだけである。
開発者は不要な出力をしないようにプログラムを設計する必要がある。他のプログラムや開発者が、冗長な出力を解析することなく、プログラムの出力から必要な情報を選び出せるようにすることを目的とする。
(注意: これは直接にはUNIX哲学ではない。強い結びつきのあるC言語の記述ではある)
ロブ・パイクは Notes on Programming in C で以下をプログラミングの格言として提案している。UNIX哲学と共通点がある。
ルール1: プログラムがどこで時間を消費することになるか知ることはできない。ボトルネックは驚くべき箇所で起こるものである。したがって、どこがボトルネックなのかをはっきりさせるまでは、推測を行ったり、スピードハックをしてはならない。
ルール2: 計測すべし。計測するまでは速度のための調整をしてはならない。コードの一部が残りを圧倒しないのであれば、なおさらである。
ルール3: 凝った(Fancy)アルゴリズムは n {\displaystyle n} が小さいときには遅く、 n {\displaystyle n} はしばしば小さい。凝ったアルゴリズムは大きな定数を持っている。 n {\displaystyle n} が頻繁に大きくなることがわかっていないなら、凝ってはいけない( n {\displaystyle n} が大きくなるときでさえ、ルール2が最初に適用される)。
ルール4: 凝ったアルゴリズムはシンプルなそれよりバグを含みやすく、実装するのも難しい。
あらゆる「ただ一つの本当の方法」という主張は信じるな。
開発者はプログラムが柔軟でオープンであるように設計する必要がある。このルールは、プログラムを柔軟にすることで、開発者が意図した以外の使い方を可能にすることを目的とする。