PARLOG

From Wikipedia, the free encyclopedia

登場時期 1983年
設計者 Keith Clark、Steve Gregory
PARLOG
パラダイム 並行論理プログラミング
登場時期 1983年
設計者 Keith Clark、Steve Gregory
型付け 動的型付け
主な処理系 PARLOG for Windows, 他
影響を受けた言語 PrologRelational LanguageConcurrent PrologGuarded Horn Clauses
影響を与えた言語 Guarded Horn ClausesKL1StrandPCN
テンプレートを表示

PARLOG (PARallel LOGic) は、Concurrent Prologに影響を受けたKeith ClarkとSteve Gregoryにより設計された並行論理プログラミング言語である。複雑なRelational Languageの仕様を整理した後継言語として提案された。1983年に最初のバージョンが発表され、その後1986年に改良版が発表された。言語の特性や細かいシンタックスはそれぞれ異なる。

PARLOGは並行プログラミングのためのプログラミング言語で、論理変数を介して通信を行う複数の軽量プロセスのネットワークとしてプログラムを記述する。 PARLOGではホーン節ガードを導入した以下のような規則の集まりでプログラムを記述する。":"はコミット演算子と呼ばれる。ガード部がない(Guardでの条件が"true"のみ)場合、ガード部とコミット演算子は省略できる。

Head <- Guard : Body.

HeadとGuardはプロセス書き換えのための条件、Bodyは書き換え後のプロセスを表す。条件を満たす規則が複数ある場合はどれか1つが選択される。Prologなどと異なり、コミット後のバックトラックを行わない。Body部は逐次/並行の2通りの実行方法が指定できる。

  • p , q   並行AND:p,qを並行実行
  • p & q   逐次AND:p,qを逐次実行(pが成功した場合のみqを実行)

例えば、 (p, q) & r は、p と q を並行に実行し、両者が成功したとき r を実行する。

プロセス間の通信にはプロセスで共有する論理変数を使用する。書き換え規則の適用に十分な情報がなければ書き換えを中断し、判断に必要な情報が得られるまで待つことで、プロセス間の同期が行われる。多くの場合、プロセス間の通信には論理変数を含んだリストで表現されたストリームを用いる。論理変数を共有するプロセスの数に制限はないため、ストリーム通信は1対1だけではなく1対Nのブロードキャストなど、様々な形態が可能である。

それぞれの述語には入出力のモード宣言が付加される。"?"は入力モード、"^"は出力モードを表す。ヘッド部の同一化の際、アクセスモードが入力モードに指定されている引数は入力のみができ、呼び出し側の変数を変数以外の項に具体化しようとする試みは中断させられる。出力モードとして指定された項が実際に出力されるのは節が選択された後である。

プログラム例

関連項目

参考文献

Related Articles

Wikiwand AI