本稿では,「型と継承」および「並行計算」という側面に焦点を絞り、オブジェクト指向言語の基礎理論を概観する.以下,型と継承に関する基礎理論のサーベイを1-4節で行ない,並行オブジェクト指向の基礎理論に関するサーベイを5-8節で行なう.なお,オブジェクト指向概念に対する型理論に基づいたアプローチの数々は,すでに[15]において紹介されている.本稿では誌面の制約も厳しいので[15]で紹介ずみのものは,基礎知識としてどうしても必要な部分を除いて取り上げない.また,本稿で取り上げた話題の一部は、近々出版される[36][42]においてより詳しく紹介される予定である.
現在多く使われている静的な型検査機構を持つオブジェクト指向言語においては,1つの変数が動的に複数の型(クラス)の値を持つことができる機構を言語に組み込んだため,従来の強い型を持つ言語と比べて型検査の能力が弱まる,型のないオブジェクト指向言語に見られる,型(クラス)を普通の値として扱うような機構を取り入れるのが困難である,などの問題点を抱えている. 一方,Mistyは筆者が考案した静的な型検査機構を持つオブジェクト指向言語であるが,1つの変数は常に1つの型(クラス)の値しか持たない,という強い型の枠組みを守り,動的な型の切り替えは組み込みクラスの機能として位置付けるという立場を取る.本論文では,このような方針を取ることで動的呼び出し機構の拡張,動的継承など従来の強い型を持つオブジェクト指向言語では難しかったことが自然に記述できることを示し,またMistyの自然な拡張として型を一般の値と同等に扱えるようにする方式を提案している.
RTC++はC++を拡張した実時間制約を記述できるオブジェクト指向言語である.RTC++の特徴は以下の通りである. 1. ステートメントレベル,オブジェクトのメソッドレベルで時間制約の記述が可能である. 2. 実行環境を持つオブジェクトとしてアクティブオブジェクトが定義できる. 3. アクティブオブジェクトをリモートホストに生成する機能がある. 本論文では,RTC++の設計思想について述べた後,その言語機能の詳細について述べる.また,いくつかの時間制約を持ったプログラミング例を示すことによってRTC++のプログラミング能力を示す.さらに,RTC++の実行環境をどのように構築すればよいかを示す.
開放型システムで使われるオブジェクトを設計する場合,プログラムの設計者は設計の時点でそのオブジェクトがどのような環境でどのように使われるのかを完全に予測することはできない.したがって開放型システムで利用されるオブジェクトは実際に利用される時点で環境に適切に適応しなければならない.ここでオブジェクトが環境に適応するとは,あるオブジェクトをある環境で使用する際にその環境に適切な振舞いをするようにオブジェクトを変換することである.本論文ではまずオブジェクトの環境への適応について考察し,適応の際に行なうオブジェクトの変換に対して2つの要請-環境主導型変換および自己同一性保持-を行なう.そしてこれらの要請を満足するようなメカニズム-適応化コンポジション-を提案し,オブジェクト指向プログラミング言語における言語機能としての実現を示す.
分散システムは非均質に発展し,そこで動作するプログラムの構築への支援が求められている.Kamui環境は,非均質で分散された資源をオブジェクトとして統一的に捉えることにより,安全で柔軟なプログラミング環境を提供する.その特徴は型機構であり,その型は非均質なオブジェクトに付けられ,オブジェクトの部品化を支援するものである.我々は,型をクラスとしてではなく,多重ビューに基づいたメッセージの集合によって付け,記述言語に依存しない情報を与えている.また,受理メッセージだけでなく送出メッセージを含めた両者によるオブジェクトの型付けにより,オブジェクトの部品としての性質を明確にしている.本論文では非均質分散プログラミングを支援するKamui環境の型機構を中心に述べる.
この論文では,オブジェクト間の非同期相互作用という概念を基礎にした形式系を提示する.この形式系は,Milnerによるπ計算の計算的に完全な断片[15]を表現能力をおとすことなく構文的に縮小したものであり,非同期的相互作用に基づく計算という概念を簡潔に表現している.意味論的には,非同期通信に基づく等価性理論が,従来の同期通信に基づく等価性理論との興味深い差異を示す.本論文では,形式系に対する基礎的な定義を幾つかの例とともに与え,その意味論的性質に関して簡単に議論する.