IT技術者教育に携わって25年が経ちました。その間、変わったことも、変わらなかったこともあります。ここでは、IT業界の現状や昔話やこれから起きそうなこと、エンジニアの仕事や生活について、なるべく「私」の視点で紹介していきます。

デニス・リッチーの功績~C言語とUNIXの父~

»

前回は書籍「プログラミング言語C 」を紹介したので、C言語の父であるデニス・リッチーについてもう少し詳しく紹介したい。本記事は、2011年10月17日付で「Computer World」に掲載されたものに加筆したものである。なお、文中に何度かAppleの共同創業者スティーブ・ジョブズの名前が登場するのは、本記事を書く直前の、ちょうど同じ頃に亡くなったからである。デニス・リッチーは2011年10月12日に他界、スティーブ・ジョブズは同年10月5日に他界されている。「プログラミング言語C」からのつながりということで書いてみたが、まるで季節外れになってしまった。

 

■デニス・リッチーの功績

Dennis Ritchie 2011
▲2011年日本国際賞受賞時の写真
By Dennis_Ritchie_(right)_Receiving_Japan_Prize.jpeg: Denise Panyik-Dalederivative work: YMS [CC BY 2.0]via Wikimedia Commons

 

1964年、マサチューセッツ工科大学(MIT)を中心に、AT&Tベル研究所およびゼネラル・エレクトリック(GE)社が共同でTSS方式のマルチユーザーOS開発プロジェクトが始まった。これがMulticsである。Multicsは当時としては非常に複雑なシステムであったため、商業的には成功しなかった。

AT&TはMultics完成前の1969年にプロジェクトから撤退した。Multicsに参加していたベル研究所のデニス・リッチーとケン・トンプソンはMulticsに代わるシステムを作るため、廃棄同然だったDEC PDP-7を使うことにした。実はMulticsで動作していたゲーム「スペーストラベル」がしたかったからだ、という説もある。それが目的かどうかは別にして、実際に「スペーストラベル」が移植されたのは事実のようだ。

PDP-7は当時としても旧式だったこと、PDP-7で開発中のOSの価値がベル研究所内で認められたことから予算が付き、1970年にPDP-11に移植された。Multicsの概念を随所に取り入れてはいるものの、非常にシンプルで軽量なシングルユーザー用OSであったため、ピータ・ノイマンがMulticsをもじって「Unics」と命名した。そして、後にマルチユーザーをサポートした時点でUNIXと改名された。ベル研究所では開発者以外の人が名前を付ける習慣になっているそうである。C言語をもとにしたC++言語も開発者とは別の人が命名している。

PDP-7とPDP-11は、同じメーカー(DEC)の製品だが命令の互換性は全くなかった。アセンブリ言語で記述されたUNIX(Unics)を移植するのは苦労したはずだ。デニス・リッチーはUNIXの移植性を高めるために、ブライアン・カーニハンと共同でC言語を開発し、1973年にC言語版のUNIXが完成した。

カーニハンとリッチーの共著である「プログラム言語C」は、著者のイニシャルから「K&R」と呼ばれ、出版当時から現在に至るまでC言語のバイブルとして読み継がれている。日本語版は故石田晴久氏の翻訳で知られ、実に300刷を超えているらしい。K&Rの素晴らしい点は、単に言語の文法が解説されているだけでなく、実例が豊富な点である。よい参考書がなかった時代、私はこれ1冊でC言語を習得した。

1983年、デニス・リッチーはUNIX開発の功績により、ケン・トンプソンと共にチューリング賞を受賞した。チューリング賞は米国計算機学会から贈られる賞で、コンピュータ界の最高の栄誉である。

 

■デニス・リッチーの影響力

デニス・リッチーは、スティーブ・ジョブズほど有名ではないが、その影響範囲ははるかに広い。

まず「コンピュータを個人で使う」という発想を実質的に初めて実現した。UNIXはTSSによるマルチユーザーシステムだったが、ごく初期の版はシングルユーザーシステムだった。マルチユーザーシステムになってからも、最初から対話型OSとして設計され「目の前に人がいて操作する」システムだった。今では当たり前のように思うだろうが、1970年頃はそうではなかった。コンピュータ資源は人間よりも高価なものであり、人間がキー入力にもたついている間、コンピュータを待たせるのは非効率的だとされた。

自分で作ったプログラムを適当なディレクトリ(フォルダ)に配置するだけで、システム標準のコマンドと同じ動作をするのも斬新だった。これも今では当たり前だが、当時はOS標準のコマンドとユーザープログラムは区別するのが普通だった。

OSのような、ハードウェアを直接操作するプログラムをアセンブリ言語以外で作成できるというのも斬新だった。これも今では当たり前で、Windowsのような複雑で巨大なOSであっても、アセンブリ言語は本当に必要な最小限の量しか使われていない。

UNIXはDECのVMSにも影響を与えた。そしてVMSの考え方と最新UNIXの成果を取り入れてWindows NTが誕生した。ご存じの通り、Windows NTは現在のWindowsの直接の先祖である。

LinuxはUNIXそのものではないが、UNIXの概念を再実装したものである。Linuxがこれだけ普及したのは、多くのコマンドやツールがソースコードの変更なしに再コンパイルするだけで動作したからだ。

LinuxはAndroid携帯電話やビデオレコーダーの制御システムにも採用されている。もしかしたら炊飯器にだって使われているかもしれない。先日買ったデジカメの取り扱い説明書にはC言語のライブラリが使われている旨の注意書きがあった。

カメラの取扱説明書に「C Library」を使用していると明記してある。 C Libraryは、C言語から呼び出すサブルーチン集なので、何らかの形でC言語が使われていることは明らかだ 。

ライセンス
▲カメラの取扱説明書より

 

■デニス・リッチーは何をしたか

現在のITシステムの素材は、インテルを筆頭に多くの半導体メーカーを含むハードウェアメーカーが開発したものである。先に亡くなったスティーブ・ジョブズは、その素材をまとめ上げ、誰も見たことがないわくわくする製品を世の中に出した。しかし、デニス・リッチーは、素材をまとめ上げ「システム」として動作させる道具としてのOSとプログラム言語の開発に貢献した。

たとえるなら、ハードウェアメーカーが食材を提供し、スティーブ・ジョブズが料理を提供した(意外なようだが、ジョブズがIT業界に新しく提供した「素材」は何もない)。一方、デニス・リッチーはキッチンとフライパンを提供したのである。

iPhoneを見るとよく分かる。美しい筐体も、使いやすいタッチパネルも、高性能なCPUも、ただ配線して組み立てるだけでは何の役にも立たない。そこにOSが搭載され、アプリケーションソフトウェアが動作して初めて意味を持つ。

iPhoneのOSであるiOSはMacOS Xをベースに大きな改変が加えられたものだという。MacOS XはほとんどUNIXだし、MacOS X上のアプリケーションの標準開発言語はObjective Cと呼ばれるC言語から派生したものだ。新しいアプリケーションでよく使われるSwiftはObjective Cの影響を受けており、大ざっぱに言うとC言語の系統である。先に紹介したとおり、WindowsもUNIXの影響を受けているし、Linuxも基本的にはUNIXだ。汎用機はUNIXの影響を受けていないが、UNIX互換機能が使えるのが普通だし、IBMの汎用機はLinuxマシンとしても動作する。こうして列挙すると、デニス・リッチー氏の影響範囲の広さと大きさが分かるだろう。

現在のITシステムというより、社会基盤はデニス・リッチー氏の功績に依存している。感謝の意を捧げるとともに、改めてご冥福をお祈りしたい。


▲C Libraryが使われているというカメラで撮った写真
別に画質には影響しない

Comment(0)

コメント

コメントを投稿する