|
並行制約プログラミング(へいこうせいやくプログラミング、)は、制約論理プログラミングの研究と並行論理プログラミングの研究とから生まれた、並行プログラミングのためのパラダイムである。並行制約プログラミングでは並行論理プログラミングをより一般化し、制約の出力(追加, tell)と入力(観測, ask)を行う複数のプロセス(エージェント)でプログラミングを行う。 == 歴史 == 1970年代初めに生まれた論理プログラミングの考え方は、その宣言的な性格を活かしつつより表現力を大きくするため、一般的な制約を扱うように拡張され、Prolog Ⅱ(1980)やProlog Ⅲ(1987)、IBMのJafferやLassezらが1987年に発表した制約論理プログラミングスキーマCLP(X)に基づいた各種言語などに発展していった。〔 Jaffar, J., and Maher, M.J., ''Constraint Logic Programming: A Survey''〕 それと並行して、論理プログラミングでの導出時のゴールをプロセス、ゴール間で共有する論理変数を通信チャネルと見なす、van Emdenとde Luceanaらの論理プログラミングのプロセス的解釈(1979)〔 van Emden, M. H., and de Lucena, G. J. ''Predicate logic as a language for parallel programming''〕 から、ガード付きコマンドの考えに基づいたガード付きホーン節でプロセスの生成や通信を表現する並行論理プログラミングの考え方が生まれた。ShapiroのConcurrent Prolog(1983)〔 Shapiro, E. ''A subset of Concurrent Prolog and its interpreter''〕 や上田によるGHC (1985)〔 Ueda, K. ''Guarded Horn Clauses''〕 やKL1などの様々なプログラミング言語や各種のプログラミングテクニックが開発され、また第五世代コンピュータプロジェクトで並列マシンのオペレーティングシステムや言語処理系、さまざまな応用プログラムの作成に利用された。 1987年にMichael Maherはより抽象化された並行論理プログラミングの論理的解釈を与え、並行論理プログラミングでの通信と同期とを制約ストア(変数値に関する部分情報の格納場所)と受信したい情報との含意(implication)の関係として定式化した〔 Michael Maher. ''Logic semantics for a class of committed-choice programs''〕 。Vijay Saraswatらはこれらの解釈を特定のデータ領域に限定しない制約全般に広げ、より一般化された並行制約プログラミングの計算理論が整備された。〔 Saraswat, V. A. ''Concurrent constraint programming languages''〕〔 Saraswat, V. A., Rinard M. and P. Panangaden. ''Semantic Foundation of Concurrent Constraint Programming''〕 並行制約プログラミングはその後さらに拡張され、離散変化を扱う時間並行制約プログラミング(Timed Concurrent Constraint Programming)や、離散・連続の両変化を扱うハイブリッド並行制約プログラミング(Hybrid Concurrent Constraint Programming)などが生まれた。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「並行制約プログラミング」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 Concurrent constraint logic programming 」があります。 スポンサード リンク
|