UNIXという考え方
その設計思想と哲学
書誌
| tag | UNIX |
| text | 唯野 |
| author | Mike Gancarz |
| editor | 芳尾桂(監訳) |
| publisher | オーム社 |
| year | H13 |
| price | 1600+tax |
| isbn | 4-274-06406-9 |
履歴
| 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の考え方の簡単なまとめ。
- スモール・イズ・ビューティフル
- 一つのプログラムには一つのことをうまくやらせる
- できるだけ早く試作する
- 効率より移植性を優先する
- 数値データはASCIIフラットファイルに保存する
- ソフトウェアを梃子(てこ)として使う
- シェルスクリプトによって梃子の効果と移植性を高める
- 過度の対話式インタフェースを避ける
- すべてのプログラムをフィルタとして設計する
小定理。
- 好みに応じて自分で環境を調整できるようにする
- オペレーティングシステムのカーネルを小さく軽くする
- 小文字を使い、短く
- 木を守る(紙のドキュメントを嫌う)
- 沈黙は金(詳細なエラーメッセージを吐かない)
- 同時に考える(並列処理)
- 部分の総和は全体よりも大きい(プログラムの分割)
- 90パーセントの解を目指す
- 劣るほうが優れている(生き残るのは最大公約数的なシステムである)
- 階層的に考える(ディレクトリ、OOPなど)
全文を読まれる場合はログインしてください
