Programmer's Note

コード読み書きの備忘録。

Dennis Richie & Ken ThompsonのACM論文を読む

最近、UNIX関連の資料をあさっているが、読まねばと思っていた、Dennis Richie & Ken ThompsonのACM論文(The UNIX Time-Sharing System)を読んだ。

これが世にUNIXの存在を知らしめた最初の論文で、内容はUNIXのコンセプトと機能の紹介がメインで、普通にUNIXやってる人なら当然知っていることばかりだが、でも面白い。
(説明の分量としてはファイルシステム4割、Shell2割、あとはプロセスその他って感じですかね)

技術的な説明の他に、理念的なものが感じられる文章も多々あった。
以下特にぐっと来た部分のの抜粋と私訳。

Perhaps the most important achievement of UNIX is to demostrate that a powerful operation system for interactive use need not be expensive either in quipment or in human effort: UNIX can run on hardware costing as little as $40,000, and less than two man-years were spent on the main system software.
たぶん、UNIXが達成した最も重要なことは、インタラクティブに使える強力なOSの実現に高価な設備や莫大な工数は必要ない、ということを実例を持って示したことかもしれない。UNIXは、たかだか4万ドル程度のハードウェアの上で動くし、メインのシステムソフトウェアは2人年に満たない工数を費やしただけだった。

1970年代の4万ドルは当時の日本円で1200万円相当(1ドル=300円換算)くらいですかね。
メインのシステムソフトウェアが二人年というのは、Ken Thompson、Dennis Richieの二人を言っているのでしょうね。
UNIXMulticsという巨大プロジェクトの失敗から生まれているので、それを暗に言及してもいる。ちなみに、時代背景の理解の一助として、「人月の神話」に出てくるOS/360の開発工数の例がある。1963年から1966年までおそよ5000人年かかっているらしい!(設計、制作、文書作成全部含めて。OSの開発の常識はOS/360の方だろう。)

Yet UNIX contains a number of features seldom offered even in much larger systems. It is hoped, however, the users of UNIX will find that the most important characteristics of the system are its simplicity, elegance, and ease of use.
その上、UNIXは他の巨大なシステムでさえ稀に提供される機能をいくつも持っている。とはいえ、UNIXのユーザに気づいてほしいのは、このシステムで一番重要な特徴は、シンプルさ、簡潔さ、そして使いやすさであることだ。

UNIXBSD以降、肥大化がどんどん進み、ロブ・パイクが1984年に論文でUNIX精神が荒んできたことを批判したほどだ。
今の時代、CPU時間、メモリ、HDDが湯水のごとく使えるが、考え方の本質は当初のUNIX精神に学びたい。
(結局、脳のキャパがあるから、シンプルさ、簡潔さ、使いやすさは人間のためにある)

Perhaps paradoxically, the success of UNIX is largely due to the fact that it was not designed to meet any predefined objectives.The first version was written when one of us (Thompson), dissatisfied with the available computer facilities, discovered a little-used PDP-7 and set out to create a more hospitable environment.
皮肉なことに、UNIXの成功はあらかじめ定めた目標を満たすために設計されたものではない、という事実に大きく起因している。最初のバージョンは、我々の一人(Thompson)が、使えるコンピュータ設備に不満を持っていて、たまたま空いているPDP-7を見つけ、より快適な環境を作るために書いたのだった。

We have not been faced with the need to satisfy someone else's requirements, and for this freedom we are grateful.
我々はずっと他人の要求を満たす必要性にかられないで済んできた。この自由に感謝したい。

ここはUNIX誕生話の一番痛快な部分だ。これをACMという権威ある雑誌の論文で率直に語っているところがすごい。
エンジニアが好きなことをやって、期せず時代を変えてしまう。他の例に、WozとApple I, II、LinusLinux,,, とかね。
UNIX誕生当時はオープンソースという言葉がなかったが、なんかものすごく雰囲気似ている。

The success of UNIX lies not so much in new inventions but rather in the full exploitation of a carefully selected set of fertile ideas, and especially in showing that they can be keys to the implementation of a small yet powerful operating system.
UNIXの成功した理由は、新しい発明をたくさんしたというより、良いアイディアを注意深く選んでめいいっぱい活用したことにある。そして特に、それらが小さいが強力なOSを実装するキーとなりうることを示したことにある。

論文には、forkはバークレイのTSS、ShellとI/OまわりはMultics, TENEXから着想をもらったと書いてある。



以上。