books aided software engineering) tools for making systems development more efficient and hopefully more effective as well. Research in this field seems to be dominated by the Europeans, although there is one Japanese contribution and a couple from North America. Some of the tools described are commercially available, while others appear to be still at the R & D stage. Requiring all the tools to address the same case study makes the comparison easier, but perhaps the simplicity of the case masks the
advantages of the next generation of tools, which incorporate advanced modelling techniques and expert systems technology. The desirability of automation is taken for granted. Several contributors see the need for an increasing determinism of the systems development process, forcing different practitioners to arrive at the same endresult, as a precursor to further automation. Many in the industry will welcome this trend towards greater standardization and
reliability. As with the first book under review, this book is unlikely to serve as an introduction to the subject. However, it provides a good snapshot of the state of the art and will be referred to by many leading user organizations as well as by researchers and suppliers. The CRIS group is to be congratulated for continuing its programme of methodology innovation. R VERYARD James Martin Associates, Ashford, U K
Short but succinct guide to parallel programming P-PROLOG, a parallel logic pro9rammin9 languaye R Yang World Scientific Editions (1987) 138 pp hardback Parallel programming languages are an active research and industrial development area motivated by the increasing need of efficient systems in particular for realtime applications. Logic programming is also an active area because logic provides a clear and simple semantics that can be used in a number of situations with great success. Logic programming has introduced a new way of programming, providing programmers with a highly declarative and modular framework. There are several logic programming languages. PROLOG is undoubtedly the most popular. It permits the integration in a unified framework of many aspects of programming. Its computation rule is simple, but, however, not complete. A strong trend in logic programming is parallel processing. It is aimed at providing completeness to logic programming languages, a more constrained way of writing programs, and a greater efficiency. This short book presents the motivations and the syntax and semantics of a full parallel logic programming
vol 31 no 7 september 1989
language, P-PROLOG. Its implementation is discussed in detail. P-PROLOG has the advantages of guarded Horn clauses and integrates the don't know nondeterminism whenever required. The language introduces the new concept of classified Horn clauses, which can be defined as follows: • The language introduces the notion of exclusive guarded Horn clauses, which is a run-time concept that is used as a synchronization mechanism. • The language combines andparallelism and or-parallelism, thus the don't know and the don't care nondeterminism can be integrated. • The input/output pattern of predicates need not be specified in advance. The synchronization mechanism makes this task dynamically. For and-parallelism, goals in the guard and in the body are evaluated in parallel and the guard part on the one hand and the body part on the other are evaluated sequentially. For or-parallelism, the alternative clauses are called in parallel (head unification and guard); a set of alternative clauses (not necessarily exclusive) can be reduced in parallel search to get
multiple solutions. At the level of the implementation, an or-tree model is provided. An implementation model of it is proposed, combining the different types of parallel processing with quite good efficiency. Programming in P-PROLOG is somewhat more complicated than programming in pure PROLOG because the programmer has to follow the constraints of the language and has to keep in mind the computation rule used. It is, however, my feeling, quite simple to write programs in P-PROLOG, and the examples given are quite convincing. This book is thus a nice introduction to parallel programming, providing a language that can be easily used by system designers in the industry as well as by students and faculty members willing to familiarize themselves with this difficult domain. The book is well written, with, however, some spelling and grammatical errors that the publisher should have noticed. The book is short (sometimes a little too much when surveying related works) and can be read in a reasonable time.
P SAINT-DIZIER CNRS, Toulouse, France
395