私のようなすでに IT 関係者だったものにとって、InternetExplorer や Netscape の前身である NCSA Mosaic は、《
先の記事》ではないが、「その分野の専門家が容易に思い付くことができる」ような物であった。
画像と文を表示するためのある種のスクリプト言語ならば、エロゲーにすら搭載されていたし、文や画像の流通もインターネットを通じて行うことはできた。現在も使われている HTML は 1986 年に ISO が標準規格としてまとめた SGML を元にしている。
IT 関係者(当時は「IT」などという用語はなかった)にとって Mosaic のようなものはやる気さえあればできるだろうし、いずれ必要となるものだという認識は広くあっただろうと思う。
しかし、それを作る手間は他の X-Window のソフトを作るよりもかなり多くなる割に、上記のような認識であるから「研究成果」としては認められにくい。さらにインターネットは研究目的で用いるためのもので高価なインフラであり、高々お遊びに過ぎない WWW のデータで帯域を奪うことはタブーとすら思われた。
実際、私のまわりでは Mosaic を見て「おもしろいね。けど、これに多くのデータを使ったらインターネット本来の目的であるような送信ができなくなるかもしれないからホドホドにね」という反応があったように記憶している。
そんな私だったからこそ、WWW の登場には大した衝撃も受けなかったが、その分、その後の普及に大きな衝撃を受けることになる。
私は感じた。私が閉じられた社会の中でタブーと感じていたものは、特定の状況下における縛りでしかなく、タブーをやぶってでも外の社会の需要を開拓できるなら、「我々」があたり前と思っている技術の中に大きな可能性があるのかもしれない。と。
先の WWW と違って Tcl の革新性の感じ方は IT 関係者でもかなり温度差があるだろう。
私は当時の IT 関係者らしく普通に TeX で文章を書き、Perl やシェルスクリプトを用いて管理用のプログラムを書き、C で計算用や実験用の実装をする一方、当時の C++ のへたれ具合や Smalltalk の重さに嘆き、研究のテーマとしても《
なぜ記号論理学から社会科学を目指すようになったのか》で書いたようにオブジェクト指向に高い関心を寄せていた。
当時はまだオブジェクト指向の概念が確立しておらず、(といっても私は今のオブジェクト指向のどこが確立した概念なのかサッパリわからないが、)クラスからオブジェクトを生成するほかに、代表となるオブジェクトからオブジェクトをコピーによって生成するというものもオブジェクト指向の枠内で考えられていた。
Tcl はすべてが「コマンド」の形を取ることから、後者の意味でのオブジェクト指向に近い物が作れるかもしれないと興味を持ったのだが、衝撃を受けたのはその「コマンド」言語の体系ではない。
Tcl には他のアプリケーションの一部としてマクロ言語のように扱われることを意図した組み込み用言語としての特徴を持つ。他の組み込み用言語は、従来からのアプリケーションを殺さないように、それでいてマシンリソースをあまり食わないようにするため、C などと連携を強めようとする。そのため、それを使うのはよほどその言語に精通していなければならず、ドキュメントを読むよりもソースを読めという雰囲気だった。
しかし、Tcl はその部分を大幅に削り、「組み込み言語」として使いたい層からはあえて難くせをつけられるぐらい単純にするかわりに、あたかも、その組み込み用インターフェイスが言語の一部であるかのように、ユーザーマニュアルにその説明を載せてきたのだ。
これはオブジェクトからオブジェクトを生成するオブジェクト指向を念頭に置いて Tcl を見た私には衝撃だった。
オブジェクト指向における private などを使ったモジュール管理機構は未来の自分への戒めとしては有効かもしれないが、C のシステム関数を個人が使うことができるなどの抜け道がいろいろある以上、複数人での開発の場合むしろプログラミングを繁雑にし、開発者間のセッション数が増えるだけに終ってしまうのではないか、という危惧があった。
Tcl のメッセージは明白だった。「標準クラス」のようなオブジェクトはクラス用の言語たる C などで書き、あくまでユーザーにはユーザーインターフェイス言語としての「コマンド」を使わせる。そして、C で書く以上「クラス」には抽象論ではない明らかな速度的利点があり、コンパイルというフェーズを必要とすることで、実質的な壁を作る。さらにC への組み込み言語ではなく、C を説明言語として Tcl を C 上で書いている感覚にさせる。
Tcl の前では、Smalltalk がいう「システムとしてオブジェクト指向」というのが、ただ言語を GUI に載せただけにすぎないように見える。オブジェクト指向のシステムというのは、言語にすべてが統合されていることが良いとは限らず、「言語」の使い方がオブジェクト指向になるべきであり、そこでは具体的な利点がプログラミングの障壁となければならないのだ。と私は思った。
私の《
プロフィール》や《
論理学》のカテゴリを見てもらえばわかる(?)ように、こちらは私個人のそれからと密接にかかわるわけだが、社会的なメッセージとしては、こう感じた。
一般に与える物は、単純で、それがタブーに満ちた物であったとしても最大限自由に使っても大丈夫にするべきである。一方、ルール変更時には自由なシステムの中でむしろ抑制的にシステムを使ってやるのがシステムとしては「美し」く、そのルールの変更が次の作成者にとっても低コストで出来るように使用時に負荷がかかっても一般に与えた物とほとんど同じ言葉を使うべきだ。 と。
コデラノブログで《
ITmedia:それはなぜですか》という記事を読んだ。私はおそらく小寺氏よりは少し年齢は下だが同じ世代に属すると思う。私も「なぜ」と思うことは未だに多いが、もう三十路を過ぎて逆に「なぜ」と問われるトシにある。
私自身の「なぜ」を考えてみたとき、私に大きな影響を与えた IT 革命を振り返ってみた。聞きたいような話じゃないかもしれないけどね。
コメント