Ciancarini, P. Parallel Programming with Logic Languages: a Survey. Comput. Lang., 17(4): 1992.
On the negative side,we note that the languages that have abandoned Prolog as a sequential
component require a different style of programming. Moreover,stream-based communications
are very badly suited for expressing many-to-one interactions. More important,we found that
the metaprogramming techniques are commonly used in system programming with logic
languages,but they are often inefficient for real applications. A metainterpreter slows execution
by a factor of one order of magnitude for each level of interpretation. So these languages are
not suitable for serious system applications.
Among the languages discussed in this survey are Aurora, Flat Concurrent Prolog, Parlog and DeltaProlog.
There are extensive studies of Concurrent Prolog and parallel logic programming in general. This is a fairly short (~32 pp.) survey.
The interaction between backtracking and concurrency is quite subtle. Consider this example (from the paper):
a(X) :- X>=0 | body1
a(X) :- X<=0 | body2
How is a(0) evaluated?
If these were Prolog clauses, if the chosen
clause fails (i.e., a solution is not obtained) the other clause is later chosen by backtracking. Conversely,
in parallel logic programming an arbitray clause may be chosen, and no backtracking is
activated if a committed clause fails in the body.
Posted to Logic/Declerative by Ehud Lamm on 12/29/02; 3:03:45 AM