The concurrent constraint programming research programmes
Concurrent constraint programming (CCP) was introduced eight years ago as a simple combination of ideas from concurrent logic programming and constraint logic programming, developed in the style of process algebras.
It seems that three meta-themes have characterized the development of this subject. CCP has been explored as a foundational paradigm for concurrent computation, resulting in the development of mathematical models of computation characterized by monotonic accumulation of information. Several concrete results have been obtained, including general and fully abstract models for different combinations of control features, and connections between operational semantics and logical deduction. Second, CCP has been pursued as a clean conceptualization of concurrent logic programming — leading for example, to work on failure-free systems for distributed computation, such as Janus — and as an extension to constraint logic programming, as in the development of the language AKL, which emphasizes encapsulated non-determinism. Last, CCP has been used as the basis for instantiating an approach to software development (called model-based computing) based on explicit declarative modeling of the systems and processes at hand, and on the systematic, rigorous generation from these models of software for simulating, controlling, diagnosing and documenting these systems. This approach has proven to be particularly appropriate when the systems at hand are complex physical systems, such as those used for digital reprographics. Constraints arise very naturally in analyzing and modeling physical systems, and CCP languages therefore provide a powerful declarative cum procedural formalism for this approach. However, a flexible representation of time, and time-based control constructs, is crucial for modeling physical systems; and this focus has led to the development of discrete timed and hybrid CCP, obtained by integrating in ideas from synchronous programming. The talk will make an effort to cover the basic results in the theoretical, practical and implementational approaches in this field, and convey their underlying unity.