導入
Unix の哲学は、Unix オペレーティング システムの中心的な開発者の経験に基づいたソフトウェア開発への一連の標準およびアプローチです。

マキロイ: Unix の四半世紀
Unix パイプの発明者であり、Unix の伝統の創設者の 1 人である Douglas McIlroy は、その哲学を次のように要約しています。
これは、「1 つのことだけを行い、それをうまく実行する」と要約されることがよくあります。 」。
これら 3 つの原則のうち、Unix に固有のものは 3 つ目だけですが、Unix プログラマは他のプログラマよりも 3 つすべてを重視します。

マイク・ガンカーズ: Unix の哲学
1994 年、 Mike Gancarz ( X Window System を設計したチームのメンバー) は、Unix に関する個人的な経験、プログラマーの友人や Unix に依存している他の分野の人々との議論を利用して、 『Unix 哲学』を作成しました。それは次の 9 つの教訓に要約されます。
- 簡潔さが素晴らしいですね。
- 実行することは 1 つだけですが、それをうまく実行するプログラムを作成します。
- できるだけ早くプロトタイプを設計します。
- 効率よりも移植性を選択してください。
- データをASCII で保存します。
- ソフトウェアの活用を最大限に活用してください。
- シェル スクリプトを使用して、活用性と移植性を向上させます。
- キャプティブなユーザー インターフェイスは避けてください。
- 各プログラムをフィルターにします。
次の 10 の教義は、Unix 哲学に属するものとして広く認識されていないものであり、その一部は激しく議論されています (モノリシック カーネルとマイクロカーネル)。
- ユーザーが環境を調整できるようにします。
- 小型で軽量のオペレーティング システム カーネルを構築します。
- 短い単語では小文字を使用してください。
- 木を救いましょう。
- 沈黙は金だ。
- 並行して考えてください。
- 部分の合計は全体より大きくなります。
- 80%-20%の法則を探してください。
- 悪いほど良い。
- 階層的に考えてください。

パイク: C プログラミングについて一言
Rob Pike は、 「C でのプログラミングに関する注意事項」の中で、プログラミングに関する格言として次の規則を提供していますが、これらは Unix 哲学の要素であると容易に考えられます。
- ルール# 1: プログラムのどの部分が最も時間を消費するかを予測することはできません。ボトルネックは意外な場所で発生するため、事前に場所を推測したり、ボトルネックがそこに発生していることが判明するまで実行時間を最適化しようとしないでください。
- ルール# 2: 測定する。測定前に速度の最適化を行わないでください。また、その場合でも、コードの一部が残りの部分を支配するまで最適化を行わないでください。
- ルール3: nが小さい場合、エレガントなアルゴリズムは遅くなり、ほとんどの場合、 nは小さいです。エレガントなアルゴリズムには大きな定数があります。ほとんどの場合、 nが大きくなることが確実でない限り、エレガントにしようとしないでください。 ( n が非常に大きくなる場合でも、最初にルール# 2 を使用してください。)
- ルール4: エレガントなアルゴリズムには、単純なアルゴリズムよりもエラーが多く、適用するのがより困難です。単純なアルゴリズムと単純なデータ構造を使用します。
- ルール# 5: データはコードに優先します。適切なデータ構造を設計し、それをうまく整理していれば、アルゴリズムは自動的に構築されます。プログラミングの中心となるのはアルゴリズムではなく、データ構造です。
- ルール# 6: ルール# 6 はありません。
Pike’s Rules 1 と 2 は、Charles Antony Richard Hoare の有名な格言「時期尚早のコード最適化がすべての悪の原因である」を言い換えています。 」。
Kenneth Thompson は、パイクのルール# 3 と# 4 を「疑わしい場合は、徹底的な検索を使用してください」というフレーズで言い換えました。意味は「賢くなろうとするな、まず強くなろう」という意味です。
ルール# 3 と# 4 は、 KISS の設計哲学の例です。
ルール# 5 は、Fred Brooks が『The Mythical Man-Month』で以前に述べたものです。
Jon Bentley のProgramming Pearlsにも、同じ設計原則に関する章が含まれています。
ルール 5 は、「スマート データを使用する愚かなコードを作成する」として要約されることがよくあります。これは、「データの構造が十分に優れていれば、それを使用するアルゴリズムは明らかである」という推奨事項の一例でもあります。
ルール 6 は、単にモンティ パイソンのスケッチ、ブルースのスケッチへのユーモアたっぷりの言及です。 C では、文字列はヌル文字 (ゼロ値) で終わり、文字列の長さを示します。したがって、最後のルールは null でなければなりません。

