XMLの文体と新しい社会契約論:(5)チューリングとXMLの関係について

去年9月にやっていたシリーズの続き。

チューリングは生前、4つの重要な仕事を行った。そのうち3つは科学的な仕事であり、1つは社会的な仕事であった。3つの科学的な仕事とは、チューリングマシンチューリングテストチューリングパターンであり、1つの社会的な仕事とはチューリング・ボンベである。

チューリングマシンは、チューリングの名声を確立した24歳のときの仕事で、チャーチの提唱によって
現在のコンピュータの基本原理として知られている。しかし、元論文のタイトル「計算可能な数について」 "On Computable Numbers, with an application to the Entscheidungsproblem" から分かるとおり、ヒルベルトの決定問題(Entscheidungsproblem)と深いかかわりを持っており、ゲーデル不完全性定理の別の表現となっている。

チューリングテストは、1950年Mind誌に掲載された「計算する機械と知能」"Computing machinery and intelligence"という論文で初出したもので、元論文ではimitation gameと呼ばれている。一般には、チューリングテストは人間の知能とそうでないものを区別するためのテスト方法として知られているが、チューリング本人はホモセクシャルであり、この論文の冒頭は男と女は区別できるかという問題からはじまっている。つまり、区別できないという視点からそもそもの議論が出発しているのである。

チューリングパターンは、1952年にPhil. Trans. Roy. Socで発表された「形態形成の化学的基礎」"The chemical basis of morphogenesis"という論文であり、生物の形態形成の研究の先駆けとなった。最近になり、日本の近藤滋氏によってタテジマキンチャクダイの縞がチューリングパターンであるという報告がなされ、チューリングパターンが生物界に実在することが初めて確認された。実は、チューリングパターンについては、以前チョムスキーの「21世紀の言語学」について紹介したとききに参照している。チョムスキー言語学の理論化の道をチューリングパターンに求めていたからだ。

チューリング・ボンベは、第二次世界大戦当時にドイツのエニグマ暗号を解読するためにイギリスが開発した暗号解読機であり、チューリングが開発の先導を果たした。

今回、紹介するのはチューリングマシンである。チューリングマシンは、テープと有限制御部から構成された非常に単純な機械のモデルであり、現在のコンピュータのモデルでもあるため、計算機科学でまず最初に勉強させられる。知っている人も多いだろう。

そういうわけで、分かりやすく書かれている書物やWEBはたくさんあるのでそちらを参照してほしい。ちなみに、レゴマインドストームでチューリングマシンを作った人もいるそうだ。新しい機械や言語が生まれるとその上でチューリングマシンを再現する人が後を立たない。一種の"Hello world"みたいなものだろう。

チューリングマシンは、有限の内部状態をもち、いま読んでいるテープの値とこの内部状態から、次の内部状態とテープに何を書くか、左右のどちらに移動するかを決める。

驚くべきことに、任意のチューリングマシン(TM:Turing Machine)をシミュレートするチューリングマシンを定義することが可能で、これを万能チューリングマシン(UTM:Universal Turing Machine)という。

UTMは、チューリングマシンの遷移規則自体を数として変換してしまい、テープから読めるようにしてしまったものである。チューリングの元論文ではdescription numberと呼ばれているこの数は、ゲーデル数と対応するものである。

UTMはTMのdescription numberをプログラムとして読み込んでいるわけで、このUTMがノイマン型(プログラム内蔵型)コンピュータの起源なのである。ノイマン型という名前は詐称だと言う人がいるほどだ。

TMをデータ化するというUTMの発想は、たんぱく質というマシンをコード化するDNAに近い。実際、フォン・ノイマンは、チューリングマシンの発想を用いて、万能チューリングマシンと同じ計算能力をもつ自己増殖オートマトンをつくった。

池上・橋本の「マシンとテープの共進化」で、マシンがテープを読み、テープがマシンをコードするという相補的な関係で、どのようにネットワークが進化するかを考察した。

プログラムとデータを区別しつつ区別しないというUTMの特性は、現在のコンピュータの可能性の広がりを規定した。UTMは、ブートストラップな開発を可能にし、プログラマーが任意の仮想世界を作り出すことを可能にしたからだ。しかも、その仮想世界は、下のレイヤーの仮想世界と同じ計算能力をもつことが保証されていた。

UTMの本性は、データとプログラムの分離性と、分離性に基づいた上での越境性にあったが、この越境性はソフトウェアの通常の利用においては危険視された。よいハッカーはプログラムをいかに自動生成するかを常に考える。しかし、そうでない人にとっては、データが書き換わることは許されるがプログラムが書き換わることは許されなかった。データとプログラムの分離がはじまる。特にウィルスなどでセキュリティが社会的に大きな問題となるにつれ、この傾向はますます拍車がかかった。

一方で、プログラムのデータ化の動きがあった。スクリプト言語がWEBアプリケーションの開発において主流になるにつれ、そうしたプログラムを設定ファイルから自動生成するニーズが形成されたからだ。プログラムの設定ファイル化である。フレームワークという手法がソフトウェア開発で当たり前になるにつれ、プログラムの設定ファイル化は加速した。

そして。現在その設定ファイルを記述する標準言語はXMLである。ある意味、現代的なアプリケーション開発とはXMLを読み取りXMLを生成するものに他ならない。プログラムとデータの越境性が水面下でまた進行しているのである。

XML以前のプログラムとデータの越境性と、XML以後の越境性の違いは、XMLはそれを上書きするマシンを選ぶことができる点にある。つまり、XMLは型づけされているのである。メモリ空間上であれば任意のアドレスのビットをプログラムから適当にいじることができるが、XML空間上では(パーサーを経由して処理する限り)それは許されていない。XMLは自分自身について知っているデータであるといわれる所以である。

しかしこのこともチューリングによってすでに導入されていた。チューリングの用いるチューリングマシンのテープには、1ビットごととびとびで0か1のsymbolが入り(F-squaresと呼ばれる)、その間にはsymbolを修飾するsymbolがとびとびで入る(同様にE-squaresと呼ばれる)。E-squaresは、対応するF-squaresの処理をしてよいのかどうかをマシンに対して教えるメタ情報の役割を果たしている。

われわれはチューリングから出発したが、いまだチューリングからは抜け出せていない。しかし、事の本質は、言語とその使用の関係にこそある。今後はそのことを明らかにしていこう。

チューリングについては、Andrew Hodgesの
Alan Turing: the enigmaが詳しいが、それを底本にした星野力の「甦るチューリング―コンピュータ科学に残された夢」で日本語で概要をつかむことができる。