本研究の目標は、ネットワーク環境や、ワークステーションクラスタ等を対象とした並列・分散プログラミング言語において見られる、様々な並行オブジェクトのモデルを容易にサポートするような言語処理系の作成であった。 この目標に対し、昨年度までに、自己反映計算(リフレクション)を利用することを提案している。この提案では、オブジェクトの排他制御やメソッド探索といった機能を、メタレベルのプログラムによって与えることで、異なった「並行オブジェクトのモデル」を拡張・変更可能にするというものである。 この提案にもとづき、本年度は、(1)処理系を試作し、(2)その処理系上で実際にメタレベルプログラミングを行って、拡張性を確めることと、(3)それらのプログラムの実行効率を測り、同時に提案している効率的な実行方式の有効性を調べるという研究を行った。 処理系は、東京大学の田浦・大山らが開発した並行オブジェクト指向言語Schematicをベースとして、東京大学の浅井が開発したScheme向け部分計算機を利用したコンパイラを作成した。このコンパイラでは、メタレベルの定義を適切に変換することにより、解釈実行のない効率的なプログラムを生成する。 メタレペルプログラミングに関しては、いくつかの単純なアプリケーションとともに、ガード付きメソッドなどの並行オブジェクトの同期モデルを、メタレベルプログラミングによって提供できることを示した。 また、効率に関しては、部分計算によるコンパイルによって、従来の(拡張性がない)最適化コンパイラによる実行と比べて1.1〜3倍程度のオーバーヘッドしかかからず、これまでのインタプリタによる実行と比べて約6倍の高速化が得られることが示された。
|