ホーム > 読んだ > 国外

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

書誌

tagUNIX
text唯野
authorMike Gancarz
editor芳尾桂(監訳)
publisherオーム社
yearH13
price1600+tax
isbn4-274-06406-9

目次

1感想
2抄録

履歴

2007.12.11読了
2010.5.13公開
2010.5.13修正
2010.5.23修正
2012.1.17タグ追加

感想

UNIXを普段から使っている人であれば、直接的/間接的を問わずそういう風にしているであろう、流儀というか、ゆるやかな方向性というか、そういうものをまとめた本。なので、分かる人には今更という項目が並んでいるわけではあるが、それでもこうやって項目としてきちんとリスト化されてみると「よくまとまっているな」と素直に思う。構成も最初に定理のリストがあって、それを詳述し、最後にまとめるというかたちになっていて非常に分かりやすい。

仕様やソフトウェアというものは、ただ放っておくと確実に肥大化・複雑化してしまい、メンテナンスのための手間が加速度的に増えていく。そういう複雑さを排除するために日頃から心がけておくべきこと、見直すべきことを簡便に見られるという意味では、悪くないアプローチの本だと思う。

抄録

iii

-/-現在のUNIX参考書のほとんどは、UNIXやUNIXに含まれる大量のツールの使い方を紹介するに留まっている。本書では、それらの背後にある基本的な考え方を取り上げる。-/-

1

UNIXの創始者たちは、ある極端なコンセプトから始めた。ユーザーは初めからコンピュータを使えるとみなしたのだ。UNIXは「ユーザーは、自分が何をしているかを分かっている」との前提に立っている。-/-

2

Multicsからアイデアを借りてくるにあたってトンプソンが採用した方法は、後のUNIXの開発者たちへの先例となった(念のためだが、以下の文章は言葉遊びや冗談ではない)。よいプログラマは素晴らしいソフトウェアを書く、偉大なプログラマは、その素晴らしいプログラムを「盗む」。いや、トンプソンを泥棒呼ばわりしているわけではない。そうではなく、彼は「独自技術症候群」を避け、すでにあるものにクリエイティブな付加価値をつけることにしたのだった。この方針が、後におそらく歴史上もっとも独創的なオペレーティング・システムを生むことになる。-/-

トンプソンは、UNIXの開発者たちへの先例をもう一つ作った。偉大なプログラムは、追いつめられた人間が書く。あるアプリケーションを書かなければいけないとして、「それが実用的でなくてはならず」「どうやればできるか知っているエキスパートがまわりにおらず」、「それを『正しく』やる時間がない」とき、一片のすばらしいソフトウェアが書かれる可能性が非常に高くなる。-/-

3

初期のUNIXに貢献した人々。

アルフレッド=エイホパターン検索、構文解析、ソート
エリック=オールマン電子メール
ケニス=アーノルドスクリーンの更新
ステファン=ボーンコマンド言語
ロリンダ=チェリー対話式計算機
スティーブン=フェルドマンCASE
ステファン=ジョンソンコンパイラ設計ツール
ビル=ジョイテキスト編集、C言語に似たコマンド言語
ブライアン=カーニハン正規表現、プログラムの原理、組版、コンピュータ援用学習
マイケル=レスク高品質のテキスト整形、ダイヤルアップネットワーキング
ジョン=マーシーコマンドインタプリタ
ロバート=モリス卓上計算機
D=A==ノゥイツダイヤルアップネットワーキング
ジョセフ=オザナテキスト整形言語
デニス=リッチーC言語
ラリー=ウォールPatchプログラム、Perl言語、rnニュースリーダ
ピーター=ワインバーガーパターン検索

8-11 cf.130-133

UNIXの考え方の簡単なまとめ。

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

小定理。

  1. 好みに応じて自分で環境を調整できるようにする
  2. オペレーティングシステムのカーネルを小さく軽くする
  3. 小文字を使い、短く
  4. 木を守る(紙のドキュメントを嫌う)
  5. 沈黙は金(詳細なエラーメッセージを吐かない)
  6. 同時に考える(並列処理)
  7. 部分の総和は全体よりも大きい(プログラムの分割)
  8. 90パーセントの解を目指す
  9. 劣るほうが優れている(生き残るのは最大公約数的なシステムである)
  10. 階層的に考える(ディレクトリ、OOPなど)

全文を読まれる場合はログインしてください


Up