Guarded Horn Clauses (GHC),および並行論理プログラミング(並行制約プ ログラミング)に関する研究


概要

並行論理プログラミング(concurrent logic programming)は、論理プログラミングにおける並列性および論理プログラミングによる並行処理の記述の研究に端を発して生まれた、並行プログラミングのためのパラダイムである。

初期の並行論理型言語としては、Relational Language (1981), Concurrent Prolog (1983), PARLOG (1983-4) などがある。Guarded Horn Clauses (GHC)(1985) は、これらの言語の検討を通じて発案された言語であり、簡潔さを最大の特徴とする。すでに12年以上の歴史を持っているが、その基本的な言語仕様はきわめて安定しており、理論的ならびに実際的な見地から、さまざまな研究が継続され、発展を続けている。

(超)軽量プロセスやスレッドを多用したプログラミングは、近年ようやく普及してきたが、これはGHCの最も得意とする分野である。手続き型言語によるスレッドプログラミングと比較して、GHCプロセスを利用した並行プログラミングは容易かつ安全である。しかも言語が単純であることから、適切なプログラミング環境を用いれば、provably correctなプログラムをより容易に得ることができると期待できる。

GHCの処理系としては、言語の提案直後に、すでにGHC-to-Prologのコンパイラが動いていた。現時点でもっとも標準的であり、薦められるのは、KLICと呼ばれるKL1-to-Cコンパイラである。KL1は、GHCにいくつかの実行制御機構を追加した言語の名称であるが、追加機能を別とすれば、KL1プログラムはGHCプログラムでもある。KLICは、記号処理言語処理系としてはかなり高い性能をもっているが、強モード体系(strong moding)やプログラム解析によって、近い将来、手続き型言語プログラムに近い性能を得ることが目標となろう。

GHCの提案後に、並行論理プログラミングおよび制約論理プログラミングの一般化として、並行制約プログラミング(concurrent constraint programming)がパラダイムとして具体化し、多くの理論研究が行なわれてきた。GHCは最も単純な並行制約プログラミング言語の一つであると同時に、最もソフトウェア蓄積の多い並行制約プログラミング言語でもある。


研究課題

一つの言語パラダイムが開花するには、10年はかかると言われている。個人的には、もっとかかるのではないかとも思う。並行論理/制約プログラミングは、さらに研究を続ける必要があり、またその価値のあるパラダイムである。

特に、並列処理および分散(ネットワーク)処理の普及に伴い、並列・並行・分散・実時間処理などを統一的に扱うための単純な核言語として育成する意義が大きい。

これを実現するための今後の研究課題としては、以下のようなものがある:

  1. プログラム解析技術
    記号処理言語の特徴はその動的な性格にあると広く考えられている。しかし、プログラムの簡潔性や、数学的計算モデルとの親和性から、プログラムの性質を静的に解析しなければならない応用分野にも向いている。GHCでは、次のような解析技術を整備してゆく必要がある。

    モード解析は、KL1プログラム静的解析系klint(第2版)の主機能としてすで に実現されており、型解析およびデータ参照数解析もklintに統合されている。

  2. 高性能逐次処理系の構築

  3. 並列処理系、並列プログラミング

  4. 分散処理系

  5. プログラミング環境

Last update: June 19, 1999
ueda@ueda.info.waseda.ac.jp