Concurrent logic programming
Concurrent logic programming is a variant of logic programming designed for parallel computing 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 and 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 proceeds 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 Keith L. Clark and Steve Gregory, which was an offshoot of IC-Prolog. Later versions of concurrent logic programming include Ehud Shapiro's Concurrent Prolog and Ueda's Guarded Horn Clause language.
The development of concurrent logic programming was given an impetus when Guarded Horn Clause 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
References
- Clark, Keith Leonard; Gregory, Steve (1981). A relational language for parallel programming. Proceedings of the 1981 conference on Functional programming languages and computer architecture. Association for Computing Machinery. pp. 171–178.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.