ブログ

/ 4,277 views

UNIXとC言語の誕生

1969年に、デニスリッチーはケン・トンプソンと共に、ベル研究所で、PDP-7上で独自のオペレーティングシステムを作り始める。

これがのちのUNIXになるわけだが、そのまえに、1964年から1969年にかけてAT&TではMulticsというUNIXと真逆のプロジェクトがGE、、、えっとゼネラルエレクトロニクスだっけと共同プロジェクトがあって、これは成功とはいえなかったが、さまざまな分野への大きな影響を放った。この失敗があるから今がある。

電話、電力をコンピュータで運用できることを目標としたコンピュータユーティリティを含んだ大規模なコンピュータオペレーティングシステムを開発していたのだ。が、あまりせいこうしたとはいえずプロジェクトは撤退となった。

大きすぎて収集がつかなかったのと、途中からケントンプソンとか興味がなくなったということだけ書かれていたことを覚えている。

その後のUnixが、いかに小さく作ろうかという設計思想を改めさせるに至るわけだ。

しかも、ベル研究所にころがっていたPDP-7上でいきなりUnixをつくったわけではなく、ゲームを作るためにはじまったのだ。

ケントンプソンはもともとMulticsプロジェクト時代にSpace Travelという宇宙飛行シミュレーションゲームを開発しててそれで遊んでいた。Multicsプロジェクトがおわってしまったので、そのゲームを動かす環境が必要だった。

ケントンプソンが開発したSpace Travelは、巨大なメインフレーム上で動かすには非常にコストのかかるゲームでした。

1プレイ50〜75ドルのCPUコストがかかったとかで、 このゲームは当初Multics(GE 645)上で開発され、その後GE 635コンピュータのGECOSオペレーティングシステム上で動くようにFORTRANへ移植された。当時、計算機の使用状況を管理するためにCPUの実行時間は金額換算されており、ゲームを1回プレイするごとに50ドルから75ドルものコストがかかっていたという超高額なゲームだったわけですよ。

実際に現金を支払うわけではない内部帳簿上の課金でしたが、貴重なコンピュータ資源をゲーム目的で大量に消費していることを経営陣に知られるのは、非常に好ましくない状況だったので、

課題は、コストダウン。

コストが高いだけでなく、当時のシステムは対話型バッチ処理モデルであったため、画面の表示がぎこちなく、コマンドをいちいち打ち込んで宇宙船を操作しなければならないなど、ゲームとしての操作性やパフォーマンスも劣悪だったということです。

この2つの大きな課題 コストと操作性

この高すぎる利用コストと操作性の悪さを避けるため、トンプソンはベル研究所内にあった、ほとんど使われていない旧式のミニコンピュータDEC PDP-7に目をつけました。PDP-7は優れたグラフィックディスプレイ(今の時代から比べたら相当貧相ではあるが当時とては)を備えておりゲームを滑らかに動かすには最適でした。

しかし、プログラムをPDP-7に移植し実行するのは非常に手間がかかったため、トンプソンは作業を容易にするためのシンプルなファイルシステムやアセンブラ、ユーティリティを自作し始めました。このSpace Travelを安価かつ快適に遊ぶための土台作りこそがUNIXオペレーティングシステムが誕生する直接的なきっかけとなったのでした。

ほら、誕生秘話はおもしれえだろ。

写真は左がケントンプソン、右がデニスリッチー

左がUNIX、右がC言語をつくったおっさんだ。