JavaScriptを有効にして再度、お越しください。新規登録ログインお知らせ※ユーザ登録は無料です.情報学広場に掲載されているコンテンツには有料のものも含まれています.有料コンテンツをご購入いただいた場合でも、領収書の発行はいたしておりません。クレジットカード会社様からの領収書/請求書をもってかえさせていただいております。複写複製および転載複製に係る著作権を学術著作権協会に委託しています。当該利用をご希望の方は、学術著作権協会が提供している複製利用許諾システムもしくは転載許諾システムを通じて申請ください。本会会員(賛助会員含む)および著者が転載利用の申請をされる場合については、学術目的利用に限り、無償で転載利用いただくことが可能です。刊行物に掲載されている製品名等は、各社の商標または登録商標です。現在の並列オブジェクト指向言語は、オブジェクト間の協調動作を明示的に表現する手段を持っていない。そのため、オブジェクト指向で記述するとシステム全体がどのように動作するのか理解しづらいという問題が指摘されている。我々は、オブジェクト間の協調動作に関わるこのような問題を解決する1つの方法として、「プロデューサモデル」とそれを記述するための言語Produce/1を提案しているが、今回その処理系を開発した。Produce/1の処理系は、Solaris2.3上で稼働するC++言語(プラスSolaris2.3マルチスレッドライブラリ呼び出し)へのトランスレータであり、C++言語とlex/yaccにより記述されている。アクタモデルでは、各オブジェクト群が「ネットワークトポロジの組み立てのための計算」と「メッセージ通信とそれに関わるオブジェクト内計算」を同じ枠組の中で行っていlcため、システム全体の動作が理解しづらくなっていた。それに対し、Produce/1では、これら2つの計算を明確に分離して2階層の並列化を実現し、それぞれをプロデューサ・オブジェクトと俳優オブジェクトに役割分担させている。アクタモデルが「メッセージgoto文しかない計算モデル」だとすると、Produce/1は「メッセージトポロジが構造化された計算モデル」と考えることができる。通常の並列オブジェクト指向言語の処理系ではオブジェクト単位にスレッドを割り付けるのが一般的であるが、Produce/1の処理系では、「ポートメソッドが送信と受信の2つに明確に区分されている」「ネットワークトポロジの組み立てと実際のメッセージ発火が別々になっている」という言語仕様上の特長を生かして、送信/受信ポートメソッド単位にスレッドを割り付けている。そのため、粒度の細かい並列性が実現されている。