Ease (programming language) とは

Easeは汎用の並列プログラミング言語です。これは、イェール大学の研究者であるスティーブン・エリクソン・ゼニス(Steven Ericsson-Zenith)、カリフォルニア州シリコンバレーの先端科学工学研究所、エコール・ナショナル・スーペリア・デ・マインズ・パリ、ピエール&マリー・キュリー大学ソルボンヌ。
Process Interaction Modelsは、Ease言語の仕様です。 Easeは、CSP(communication sequential processes)のプロセス構成を、コンテキストと呼ばれる論理的に共有されたデータ構造と結合します。コンテキストは、プロセスによって構築され、プロセスが相互作用する方法を提供する並列データ型です。
この言語には2つのプロセスコンストラクタが含まれています。
協力には明確なバリア同期が含まれており、
 
P ( ) Q ( ) ; {\displaystyle \parallel P()\parallel Q();}
あるプロセスが他のプロセスの前に終了すると、他のプロセスが終了するまで待機します。
従属は、作成時にスコープ内にあるコンテキストを共有するプロセスを作成し、完了すると終了し(他のプロセスを待つことはなく)、以下のように記述されます。
 
/ / P ( ) ; {\displaystyle {\big /}\!\!/P();}
従属プロセスは、親プロセスが停止したために完了したコンテキストと対話しようとすると停止します。これにより、結果が必要でない場合に終了する投機的なプロセスを作成することができます。
強力なレプリケーション構文により、複数のプロセスを作成できます。例えば、
 
i f o r n : P ( i ) ; {\displaystyle \parallel {i}\;{for}\;{n}:P(i);}
ローカル定数iを持つn個の同期プロセスを作成します。
プロセスはローカル変数を共有することはできず、共有コンテキストの構築に協力することはできません。リソースと呼ばれる特定のコンテキストタイプは、コールリプライのセマンティクスを保証します。
コンテキストには4つの機能があります。
 read(context、variable) – 共有コンテキストから変数に値をコピーします。 write(context、expression) – expressionの値を共有コンテキストにコピーします。 put(context、name) – nameにバインドされた値を共有コンテキストに移動します。 nameの値は、その後、定義されません。 get(context、name) – コンテキストから値を移動し、nameにバインドします。値はコンテキストから削除されます。
コンテキストタイプは、Singletons、BagsまたはStreamsであり、添え字付き配列にすることができます。
Easeには半意義の定義があります。つまり、言語がプログラマに及ぼす影響とアルゴリズムの開発方法を説明します。この言語は、並列プログラムの開発を容易にするように設計されています。