■プログラミング言語から考える「進化するアーキテクチャ」の要素
UNIX というオペレーティングシステム(以下、OS)は1968年にアメリカAT&T社のベル研究所で開発され、FreeBSD、Solaris、LINUXなどに商業的な理由や法律的理由などにより派生しているが基本的な思想はこれまで40年間続いている。C(1973年にAT&Tベル研究所で開発された)というハードウェアに依存しない移植性の高いプログラミング言語で記述され、多くのプラットフォームにへの移植が可能となった。このアーキテクチャは、今日においても最先端のコンピュータシステムでその設計概念が利用されている。インターネットサーバーや各種オンラインシステムあるいは最近の携帯電話やMACのOSとしてもLINUXが採用されている。なぜ、これだけ長い間利用され続けるのか、しかも陳腐化することなく最新の技術として利用できるのか、その鍵をとくことは「進化するアーキテクチャ」を考える上でのヒントになると考える。
Cの特徴は、IOを持たないことである。それまでのプログラム言語は、FORTRANやCOBOL(以下、既存言語)のようにプログラム言語内にIOを定義していた。コンピュータを動作させるにあたり、IOがなければ内部記憶の情報を演算するに過ぎず、そこへ期待する入力をすること、およびその結果を表現することもできないものとなってしまう。IOがなければコンピュータは何もできないに等しいくらいIOは重要なものである。既存言語はIOをプログラム言語に定義し、外部入出力装置との間で情報入出力をできるようにしたものである。しかし、技術が進化しこれまでの外部入出力装置以外の外部入出力装置が開発されたらどうか。新しい外部入出力装置により新しい入出力方法が必要となるならば、それまでのプログラム言語の入出力では利用できなくなる。新しい入出力装置に対応するためにはプログラム言語内に新しい入出力を定義する必要がある。その結果、プログラム言語が入出力に依存することになり、新しい入出力が開発される度に、言語自体の更新が必要となるのである。言い換えれば、新しい入出力を利用するためにはプログラム言語のバージョンアップを待たねばならないことになり、技術の進化の妨げになる恐れがある。
言語仕様としてIOを持たないCの場合では、既存言語のように入出力に影響されることはなく、どのような新しい入出力が開発されたとしてもCの言語仕様は変わらない。言語仕様からIOをなくすことにより30年以上もの長い期間、陳腐化されることなく利用されている。
言語仕様の範囲を「データ記述方法」と「プログラム実行制御」だけに制限する。しかし、その制限された記述方法の組み合わせにより自由なインタフェースを実現するのである。そして、そこから生産された資源はライブラリとして共有することであたかも言語自体が発展するように見えるのである。
「進化するアーキテクチャ」の要素として、「アーキテクチャを極限まで小さく固定化する」ことを提案したい。