This book is written for beginners who want to learn how to program concurrent multiprocessor systems. It is a complete guide to the OCCAM language and OCCAM programming on transputer-based systems.
The author starts with a brief discussion of the rationale for concurrency and then concentrates on describing OCCAM. Chapter 2 presents a fair informal discussion of the main OCCAM sequential constructions.
The next three chapters cover all the OCCAM mechanisms for handling concurrency. Channels, input and output, protocols, timers, and ports are discussed in detail. Wexler illustrates the style of OCCAM programming by presenting many well-chosen examples.
Later chapters deal with OCCAM on transputers. Chapter 6 discusses the transputer itself and how to run programs on it, but provides no profound explanation of the transputer architecture. Chapter 7 is devoted to systems of multiple-transputer processors. Important problems such as dividing the job into processes, mapping the processes onto processors, and balancing processing are considered here. The last chapter presents some complete examples illustrating techniques found in OCCAM programs.
The whole book is well written and well structured. All the main problems of concurrent programming are considered, the explanations are clear, and the book will undoubtedly be of great interest to all programmers, engineers, and computer scientists seeking a good guide to OCCAM 2 and transputers.
This book does not discuss future directions in OCCAM and transputer technology. Transputers and OCCAM are well suited to each other, which determined the dominant line of the transputer technology in Europe. Some problems call for dynamic restructuring of links in a multiprocessor system, however, so more movable features of hardware and software should be designed. For instance, future versions of OCCAM should contain some efficiently implemented facilities such as are contained in Ada. Some progress in this direction has been made at Kiev University in the framework of the PARCS (Parallel Asynchronous Recursively Controlled Systems) programming technology.