Parallel Programming with Logic Languages: A Survey

Formal properties of logic languages are largely studied; however, their impact on the practice of software design and programming is currently minimal. In this paper we survey some interesting representatives of the family of logic languages aiming at comparing the different capabilities they offer for designing and programming parallel systems. The logic languages Prolog, Aurora, Flat Concurrent Prolog, Parlog, GHC, and DeltaProlog were chosen, because a suitable set of relevant examples has been published, mostly by the language designers themselves. A number of sample programs is used to expose and compare the languages with respect to their object oriented programming capabilities for multiprocess coordination, interprocess communication, and resource management. Special attention is devoted also to metaprogramming as well, seen as a useful technique for specifying and building the operating environments of the languages themselves. The paper ends with a discussion on positive and negative features found comparing these languages, and indicates some guidelines to be followed in the design of new logic languages.

[1]  Ian Foster,et al.  Strand: New Concepts in Parallel Programming , 1990 .

[2]  Kazunori Ueda,et al.  Guarded Horn Clauses , 1986, LP.

[3]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[4]  Antonio Brogi,et al.  The concurrent language, Shared Prolog , 1991, TOPL.

[5]  Ehud Shapiro,et al.  The family of concurrent logic programming languages , 1989, CSUR.

[6]  K. Mani Chandy The composition of concurrent programs , 1989, Proceedings of the 1989 ACM/IEEE Conference on Supercomputing (Supercomputing '89).

[7]  Dana S. Scott,et al.  Concurrent constraint programming languages , 1989 .

[8]  R.M. Baizer Living in the Next-Generation Operating System , 1987, IEEE Software.

[9]  Ian T. Foster,et al.  Systems programming in parallel logic languages , 1990 .

[10]  Nicholas Carriero,et al.  Coordination languages and their significance , 1992, CACM.

[11]  Harvey Abramson,et al.  Logic programming as a formalism for specification and implementation of computer systems , 1988 .

[12]  Stephen Taylor,et al.  Parallel logic programming techniques , 1989 .

[13]  Alvin M. Despain,et al.  The Performance of Parallel Prolog Programs , 1990, IEEE Trans. Computers.

[14]  Keith L. Clark,et al.  A Declarative Environment for Concurrent Logic Programming , 1987, TAPSOFT, Vol.2.

[15]  Gilles Kahn,et al.  Coroutines and Networks of Parallel Processes , 1977, IFIP Congress.

[16]  Jiro Tanaka Meta-Interpreters and Reflective Operations in GHC , 1988, FGCS.

[17]  Keith L. Clark,et al.  PARLOG: parallel programming in logic , 1986, ACM Trans. Program. Lang. Syst..

[18]  Ehud Shapiro,et al.  Concurrent PROLOG: Collected Papers , 1987 .

[19]  Kenneth M. Kahn,et al.  Actors as a special case of concurrent constraint (logic) programming , 1990, OOPSLA/ECOOP '90.

[20]  Richard A. O'Keefe,et al.  The Craft of Prolog , 1990 .

[21]  K. Fuchi,et al.  Concurrent Prolog , 1988 .