UNIX哲学の基本原則

   このエントリをはてなブックマークに登録    2007/3/1

Basics of the Unix Philosophy」でUNIX哲学の基本原則がまとめられています。 UNIXの設計思想として紹介されていますが、多くは普通のソフトウェアを設計する場合にもあてはまると思われます。

1. Rule of Modularity(モジュール性):

きれいなインターフェースで接続された、簡潔な部品を書きましょう。

2. Rule of Clarity(明瞭さ):

明瞭さは賢さよりも良いです。

3. Rule of Composition(構成):

他のプログラムと接続できるようにプログラムを設計しましょう。

4. Rule of Separation(分離):

ポリシーとメカニズムを分離しましょう。エンジンとインターフェースを分離しましょう。

5. Rule of Simplicity(単純性):

単純化された設計をしましょう。複雑さは必要な時だけ追加しましょう。

6. Rule of Parsimony(節約):

大きなプログラムはどうしてもそれが必要な時だけ書きましょう。

7. Rule of Transparency(透明性):

透明性が確保できるような設計にしましょう。その方が検査とデバッグが楽になります。

8. Rule of Robustness(頑健性):

頑健性は透明性と単純性の産物です。

9. Rule of Representation(表現):

知識はデータに織り込みましょう。そうすればプログラムロジックは単純で堅牢になります。

10. Rule of Least Surprise(驚きが少ないこと):

インターフェースを設計する時には、できるだけ驚きがないようにしましょう。

11. Rule of Silence(沈黙):

特段驚くような事が無い場合、プログラムは何も言うべきではありません。

12. Rule of Repair(修理):

修理できるものは修理しましょう。しかし、出来ない場合には、できるだけ騒ぎながら迅速に失敗しましょう。

13. Rule of Economy(経済):

プログラマの時間はコンピュータの時間と比べて高価です。

14. Rule of Generation(生成):

可能な限り手作業を避けましょう。プログラムを使ってプログラムを書ける場合には、そうしましょう。

15. Rule of Optimization(最適化):

磨きをかける前にプロトタイプを作成しましょう。最適化は動作するようになった後にやりましょう。

16. Rule of Diversity(多様性):

一つの正しい方法を要求するものは全て信用しないようにしましょう。(原文 : Distrust all claims for one true way.)

17. Rule of Extensibility(拡張性):

将来のことも考えて設計しましょう。それは、思ったよりも早く来ます。


参考

The Art of Unix Programming

The Art of Unix Programming (本)

   このエントリをはてなブックマークに登録   



コメント

ちく
間違ってたらすみません.
Robustnessは,堅牢性とかの方がよくないですか?冗長性だと,無駄にだらだら長いっていう意味になってしますと思うのですが.
ヒツジ
「冗長」って文字が含まれているので、ちくさんのおっしゃるとおり負のイメージがちょっとありますね。

でも、「冗長性」って言い回し自体はこういうケースでよく使われているみたいなので、問題ないと思いますよ。
個人の感性の問題になっちゃうのかもしれませんが…。

「堅牢性」だと「壊れにくさ」みたいなイメージがあるので、壊れても問題なく動くという意味の「冗長性」とは少しズレがあるとおもいます。
管理人
ご指摘ありがとうございます。そうですね。冗長はredundantですね。修正しました。
管理人
コメント入力がヒツジさんとかぶってしまいました。。。個人的にはヒツジさんのような思考で「冗長」と書いてしまいましたが「堅牢」も良い気がしてきたので、堅牢にしてしまいました。訳って難しいですね。。。
simoom634
前後の文脈が全くわからないので外しているかもしれませんが、
"Distrust all claims for one true way."は
「一つの正しい方法を要求するものは全て信用するな」
というように捉えれば、多様性の説明になるかと思いました。

claim for 名詞…「名詞を要求すること」のはずです。
管理人
simoom634さん、ご指摘ありがとうございます。この一文は自分で全く自信が無かったので原文もつけていました。ご指摘の訳だと意味が通りますね。ありがとうございます。
通りすがり
Robustnessは頑健性です
管理人
ご指摘ありがとうございます。頑健性に再変更しました。


あきみち

アカマイ 知られざるインターネットの巨人

インターネットのカタチ もろさが織り成す粘り強い世界
「インターネットのカタチ - もろさが織り成す粘り強い世界 -」関連資料

マスタリングTCP/IP OpenFlow編
「マスタリングTCP/IP OpenFlow編」関連資料

Linuxネットワークプログラミング




外部サイト

プレコ王国
ディスカス魂
金魚タイムズ
YouTubeチャネル
Twitter
Facebook

フィードメーター - Geekなぺーじ
Copyright (C) Geekなページ.
All rights reserved. 無断転載や無断コピーなど、私的利用の範囲を逸脱した利用はおやめ下さい.