UNIX Philosophyメモ
Contents
UNIXという考え方―その設計思想と哲学でまとめられていた、UNIXのphilosphyです。メモするだけ。
- Small is Beautiful.: 小さいものは、大きいものにはない利点がいくつもある。小さいもの同士なら、簡単に独特の便利な方法で組み合わせることができるというのもその一つだ。
- Make each program do one thing well.: 一つのことに集中することで、プログラムに不要な部分をなくせる。不要な部分があると、実行速度が遅くなり、不必要に複雑になり、融通が利かなくなる。
- Build a prototype as soon as possible.: あらゆるプロジェクトにおいて、試作は重要だ。一般的に試作は設計全体のうちのほんの一部として扱われているが、UNIXにおいての試作は、効率的な設計には欠かせない重要な一部だ。
- Choose portability over efficiency.: UNIXが移植可能なオペレーティングシステムという新境地を開拓したとき、これはすごいニュースだった。現代のソフトウェア設計では、プログラムに移植性があることは当たり前のこととして捉えられている。これは、UNIXの考え方のうち、ほかのシステムにも広く受け入れられている一つの例だ。
- Store numerical data in flat ASCII files.: 移植性のあるプログラムは重要だ。しかし、移植性のあるデータも移植性のあるプログラムに勝るとも劣らず重要だ。従来の移植性に関する議論では、データの移植性という視点がいつも無視されてきた。
- Use software leverage to your advantage.: 再利用可能なモジュールの重要性について、たいていのプログラマは表面的にしかわかっていない。プログラムの再利用は、ソフトウェアのてこを最大限に活用した強力な考えだ。UNIXの開発者たちは、この考え方に従って、非常に多くのアプリケーションを比較的短期間に開発してきた。
- Use shell scripts to increase leverage and portability.: シェルスクリプトは、ソフトウェアのてこを生かすと同時に移植性も高めるという二つの効果がある。可能なときは常に、C言語ではなくシェルスクリプトを使うべきだ。
- Avoid captive user interface.: いくつかのコマンドは、「ユーザーを拘束する」インターフェースを持つ。そのコマンドを実行してしまうと、実行中にほかのコマンドを実行することはできない。つまり、そのコマンドの実行中は、ユーザーはそこを離れられなくなってしまう。そのため、この類のものを「拘束的」ユーザーインターフェースと呼ぶ。
- Make every program a filter.: ソフトウェアの本質は、データを処理することで、生成することではない。その能力を最大限に発揮するためには、プログラムをフィルタとして動作するように設計すべきだ。
小さなプログラムを組み合わせて、段階的に成長していくこと・ユーザーは自分が何をしているのかを常に把握していること…これらがUNIXというOSが持ってきた性格みたいです。
移植性の項目でも紹介されていたので、エディターをEmacsに変更してみようかしら。Emacsであれば今後40年過ぎても変わらずに存在し続けるだろうから。Windowsはこれからも存在し続けるのかどうかはわからないからなぁ。
Mike Gancarz 芳尾 桂
おすすめ平均
実用書の前に読むべき本
むしろUNIXが苦手な人に
UNIXユーザ以外にもお勧めです