UNIX という考え方

古典のひとつなんだと思いますが、読みました。さくさく読みすすめられて、楽しい本です。


UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学


以下、本のなかで「定理」として掲げられている、UNIX の考え方の簡単なまとめ。

  1. スモール・イズ・ビューティフル
  2. 一つのプログラムには一つのことをうまくやらせる
  3. できるだけ早く試作する
  4. 効率より移植性を優先する
  5. 数値データは ASCII フラットファイルに保存する
  6. ソフトウェアを梃子として使う
  7. シェルスクリプトによって梃子の効果と移植性を高める
  8. 過度の対話型インタフェースを避ける
  9. すべてのプログラムをフィルタとして設計する


印象に残った一節。

小さなプログラムは、今日とは違う明日があることを認識している。今日完璧に見える機能でも、明日は不完全になり、場合によっては時代遅れになるかもしれない。単体型プログラムは目前のすべての状況に対処しようとするが、小さなプログラムはソフトウェアが進化することを素直に受け入れている。ソフトウェアに完成はない。ただリリースがあるだけだ。


できるだけシンプルさを保つことが、変化への適応力につながるのかな、と思いました。

なんとなく、Lisp の話が似ているようにも感じました。Lisper ではないので、適当ですが... (^^;

Lisperの戦略は、全てをなるべく単純で直交する規則で表現しておくことです。 規則が複雑になればなるほど、例外規定が多くなればなるほど、 新たな規則を導入する際に矛盾を生じる可能性が多くなるからです。 単純で、直交する規則であれば、新しい問題に対してまずそれらを 組み合わせて対応し、対応できなければ新たな直交する規則を 導入することでそれまでの体系と矛盾なく言語を拡張してゆくことができます。

もうひとつ印象に残っている一節。

ソフトウェアの世界がどの方向に向かおうとしているのか、絶対の確信をもって予言できる人は誰もいない。人間にできることは、せいぜい明日のニーズは変化しうるという前提に立って、今日のニーズを満たすソフトウェアを作ることくらいだろう。開発者は設計仕様書の作成に何週間も何ヶ月も費やす無駄をやめ、計画の目指すおおよその方向を文書にまとめたら、さっさと開発にとりかかったほうがよい。