注意:このブログは、読者不在を心掛けつつ、白石俊平個人の私的な文章を面白くなく綴るものです。
====
メタとは規則のことである。
====
メタとは規則のことである。
長い考察を経て、一旦この定義に辿り着いた。この定義がどれくらいの強度を持つのか、この定義からどのように論理が発展するものか、少しずつ試していきたいと思う。
ゲーデル、エッシャー、バッハにおいて、メタは中心的なテーマであった。が、メタについては数多くの例証はするものの、「メタとは何か?」という問いに遂には答えを出していなかった(そもそも著者の主要な関心は、メタそのものではなく、メタが引き起こす現象そのものだったのだから無理はない)。
そこでは、メタとは規則の階層でもあり、意味の階層であった。そして、この「両面」を多角的に論じることで、知性の謎に迫ろうと言うものであった。なるほど、知性を語ろうとするならば、現象の「解釈」とそこから「意味」を見出す作業を抜きにしては語れまい。
しかし、「メタとは何か」を語る上では、意味はむしろただの副産物と言って良い。極めて重要な副産物ではあるが。
(上の段落の「言い切り」は、ちょっとした冒険である…ぼく自身、まだ「メタとは規則である」という定義を受け入れきれてはいないのだから。これは一旦言い切ってみるとどうなるかの実験である)
例えば、機械語とアセンブリ言語の関係を見るとする。機械語は単なる0と1の羅列でしかなく、CPUは単なる機械語のインタープリタだ。そして、アセンブリ言語は、その機械語と一対一に対応する、人間にとって(幾分)意味の分かりやすい命令セットである。
この関係においては、アセンブリ言語が機械語に対してメタ的な関係であるということができよう。こんな言い方ができる。「無機質な0,1の並びに意味を与えた」と。さらにC言語がアセンブリ言語に対してより直感的なインターフェイスを与えると、より人間にとってプログラムコードの「意味」は明示的となる。こうした意味の階層が、メタレベルそのものだと思ってもおかしくはない。
しかし、意味が単なる副産物だと置き、翻訳規則そのものに注目しよう。つまり、アセンブリ言語も単なる記号でしかなく、機械語とアセンブリ言語、アセンブリ言語とC言語の間には、単に記号間の翻訳規則があるだけだ、と。そして、その規則そのものがメタなのだと。
機械語に対してメタなのは、アセンブリ言語そのものではなく、アセンブリ言語と機械語の対応規則なのだ。
この違いは大きい。規則は変えうる。アセンブリ言語と機械語の対応関係は、規則を変えれば全く変わる。アセンブリ言語自体をメタ階層だと考えていたときより、ずっと動的な印象を受ける。それは、規則を一度定めると、それに従った現象が生じるにつれ、どんどん変えがたいものとなっていくからだ。アセンブリ言語は、規則の結果生み出され、広く使われているがゆえに、もはやその仕様を変更するのは不可と思えるほどだ。
以前検討した、ネーミングに関する謎も、容易に説明できる。コンセプトに対してネーミングを行うというのはメタ的行為に思えるのに、一度名前を付けると、その対象物としてのコンセプトは変化させうる。一方で名前そのものは変え難くなる。果たしてネーミングがメタレベル的に上なのか、コンセプトのほうが上なのか?
これは、名前そのものがメタレベルなのではない。「あるコンセプトに、ある名前を対応付ける」という行為(規則)がメタなのだ。ネーミングという行為そのものをメタレベルだと考えると、コンセプトは単なる変数でしかない。ただし、規則に従って生み出した生成物(名前)は、やはり変えがたいものとなる。
コメント
コメントを投稿