请输入您要查询的百科知识:

 

词条 Concurrent logic programming
释义

  1. History

  2. See also

  3. References

{{Programming paradigms}}

Concurrent logic programming is a variant of logic programming in which programs are sets of guarded Horn clauses of the form:

H :- G1, …, Gn | B1, …, Bn.

The conjunction G1, … , Gn is called the guard of the clause, and | is the commitment operator.

Declaratively, guarded Horn clauses are read as ordinary logical implications:

H if G1 and … and Gn or B1 and … and Bn.

However, procedurally, when there are several clauses whose heads H match a given goal, then all of the clauses are executed in parallel, checking whether their guards G1, … , Gn hold. If the guards of more than one clause hold, then a committed choice is made to one of the clauses, and execution proceedes with the subgoals B1, …, Bn of the chosen clause. These subgoals can also be executed in parallel. Thus concurrent logic programming implements a form of "don't care nondeterminism", rather

than "don't know nondeterminism".

History

The first concurrent logic programming language was the Relational Language of Clark and Gregory, which was an offshoot of IC-Prolog. Later versions of concurrent logic programming include Shapiro's Concurrent Prolog and Ueda's Guarded Horn Clause language .

The development of concurrent logic programming was given an impetus when GHC was used to implement KL1, the systems programming language of the Japanese Fifth Generation Project (FGCS). The FGCS Project was a $400M initiative by Japan's Ministry of International Trade and Industry, begun in 1982, to use massively parallel computing/processing for artificial intelligence applications. The choice of concurrent logic programming as the “missing link” between the hardware and the applications was influenced by a visit to the FGCS Project in 1982 by Ehud Shapiro, who invented Concurrent Prolog.

See also

  • Concurrent constraint logic programming
  • Logic Programming
  • Nondeterministic programming

References

  • Clark, K. L. and Gregory, S. (1981). [https://dl.acm.org/citation.cfm?id=806776 A relational language for parallel programming]. In Proceedings of the 1981 conference on Functional programming languages and computer architecture (pp. 171-178). ACM.

2 : Programming paradigms|Logic programming

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/20 23:19:17