Janus (concurrent constraint programming language) とは

Janusは、K. KahnとVijay A. SaraswatによってSIGPLAN Notices、1990年10月の「同時制約(論理)プログラミングの特別なケースとしてのアクター」で部分的に記述されたコンピュータープログラミング言語です.Janusはバックトラッキングのない同時制約言語です。
Janusは、バッグ・チャンネルを使用して並行性をモデル化しています。プロセスにメッセージを送信する必要があるコードは、バッグを別のバッグとメッセージのシングルトンバッグの結合体にすることによってそれを行います。その後、他のバッグは、後続のメッセージを送信するために制約を受けることができる。
プロセスは、バッグを、シングルトンと他のバッグとの合体であると言うパターンにマッチングさせることによってメッセージを受信します。バッグチャネルのロジックは、アクターモデルによって共有されるプロパティを生成します。つまり、メッセージの到着順序は保証されません。しかし、アクターモデルのアクターとは違って、Janusのプロセスは、「郵便箱」の周りをバッグの形で話すことができ、複数のものを保持することができます。メールボックスを通過させ、複数のメールボックスを保持するこの機能は、Janusの影響を受けるコンピュータプログラミング言語ToonTalkに継承されています。
ヤヌスはプログラミング言語であり、ジャヌスの名前は2面のローマ神であるジャヌスにちなんで命名されています。なぜならヤヌスのすべての論理変数は2つの "面"を持ち、引数として渡すことができる2つの面があるからです。これらは尋問者と出納係と呼ばれています。これらはそれぞれ、変数の価値(またはその価値の特性)と価値を伝える権利(または価値が何であるかに関するいくつかの制約を伝える権利)を示す権利を表します。 askerとtellerの側面は、互いに独立して引数として渡すことができます。どちらの権利も他の権利を意味しません。言語の構文は、出納係をコピーしたり、複数回練習したりするのを防ぎます。 KahnとSaraswatによると、論理的矛盾が静的に防止されています。