Concurrent Constraint Programming
Concurrent Constraint Programming introduces a new and rich class of programminglanguages based on the notion of computing with partial information, or constraints, that synthesizeand extend work on concurrent logic programming and that offer a promising approach for treatingthorny issues in the semantics of concurrent, nondeterministic programming languages.Saraswatdevelops an elegant and semantically tractable framework for computing with constraints, emphasizingtheir importance for communication and control in concurrent, programming languages. He describesthe basic paradigm, illustrates its structure, discusses various augmentations, gives a simpleimplementation of a concrete language, and specifies its connections with other formalisms.In thisframework, concurrently executing agents communicate by placing and checking constraints on sharedvariables in a common store. The major form of concurrency control in the system is through theoperations of Atomic Tell - an agent may instantaneously place constraints only if they areconsistent with constraints that have already been placed - and Blocking Ask - an agent must blockwhen it checks a constraint that is not yet known to hold. Other operations at a finer granularityof atomicity are also presented.Saraswat introduces and develops the concurrent constraint family ofprogramming languages based on these ideas, shows how various constraint systems can naturallyrealize data structures common in computer science, and presents a formal operational semantics formany languages in the concurrent constraint family. In addition, he provides a concrete realizationof the paradigm on a sequential machine by presenting a compiler for the concurrent constraintlanguage Herbrand and demonstrates a number of constraint-based concurrent programming techniquesthat lead to novel presentations of algorithms for many concurrent programming problems.Vijay A.Saraswat is Member of the Research Staff at Xerox Palo Alto Research Center.