2005 年 03 月 12 日 : メタプログラミング
ブラウザやメーラー、表計算などの便利で使いやすいプログラム(アプリケーション)のお陰で、たくさんの恩恵を受けている。
自動車や家電をロボットが自動的に製造するように、こういったコンピューターのプログラムが自動生成されるとすればどうだろうか。
プログラムを生成するプログラムのことを『メタプログラム』という。メタとは「上位の(above)」とか「超えて(beyond)」というようなことを意味するギリシャ語に由来する接頭語だ。いまソフィア・クレイドルではプログラムを自動生成するための『メタプログラミング』という概念とそのメカニズムの実現について研究開発を推進している。(携帯プログラムのサイズを半分にするSophiaCompressもプログラムを生成するという意味において一種のメタプログラムである。)
こんなに科学技術が進歩しているのに、プログラムだけは相変わらず大半の部分を人手に頼った方法によって製造されている。人間というのは必ずミスをする性質を持っている。そのため、どんなプログラムでもバグ(不具合)の存在からは免れない。大規模なプログラムであればあるほど、バグが含まれる可能性が高いといえよう。
WindowsにしてもWindowsXPになってようやく安定してきたが、WindowsMeやWindows98までは利用している最中にハングしてWindowsが立ち往生するのは日常茶飯事のことだった。もしそんなプログラムが飛行機や原子炉のような人命に関わる運行システムに使われるとすればどうだろうか。
プログラムを生成するための『メタプログラミング』の仕組みが確立されれば、それによって自動的に生成されるさまざまなプログラム(アプリケーション)も大元の『メタプログラミング』に信頼性があればすべて信頼できるものになる。
地球上には植物や昆虫、魚、鳥、哺乳類などいろんな生物が存在しているが、遺伝子の構造自体は共通していて、生物の遺伝子の中の情報のちょっとした差異がそのような多様性を生み出しているようだ。メタプログラミングの研究のヒントも見出せるかもしれない。
『メタプログラミング』によってプログラミングの世界は次のステージへと新たな進化発展を遂げるような予感がする。
追記:
物事の根本原理を研究する学問としてアリストテレスの形而上学(メタフィジックス)がある。『メタプログラミング』とはプログラミングの本質に迫る研究分野といえよう。