:santagrin: This book was suggested by Alex Sinton
, a Senior Design Engineer at Definitive Design, Pasadena
Terms and Conditions:
Jim Davies wrote:An electronic version of the book has been produced, and may be copied, printed, and distributed free of charge. However, such copying, printing, or distribution may not: be carried out for commercial gain; or - for copyright reasons - take place within India, Pakistan, Bangladesh, Sri Lanka, or the Maldives; or involve any modification to the document itself.
This book is an introduction to CSP
(Communicating Sequential Processes), a formal language used to describe parallel systems. The language and this book was authored by the same person, C. A. R. Hoare, a well known figure who discovered the QuickSort algorithm in 1959 and led a team in the design and delivery of the first commercial compiler for the programming language, the Algol 60, in 1960.
The ultimate objective of the book is to convey an insight which will enable the reader to see both current and future problems in a fresh light, in which they can be more efficiently and more reliably solved; and even better, they can sometimes be avoided.
The most obvious application of the new ideas is to the specification, design, and implementation of computer systems which continuously act and interact with their environment. The basic idea is that these systems can be readily decomposed into subsystems
which operate concurrently and interact with each other as well as with their common environment. The parallel composition of subsystems is as simple as the sequential composition of lines or statements in a conventional programming language.
This insight brings practical benefits. Firstly, it avoids many of the traditional problems of parallelism in programming : interference, mutual exclusion, interrupts, multithreading, semaphores, etc. Secondly, it includes as special cases many of the advanced structuring ideas which have been explored in recent research into programming languages and programming methodology : the monitor, class, module, package, critical region, envelope, form, and even the humble subroutine. Finally, it provides a secure mathematical foundation for avoidance of errors such as divergence, deadlock and non-termination, and for achievement of provable correctness in the design and implementation of computer systems.
This is a book for the aspiring programmer, the programmer who aspires to greater understanding and skill in the practice of an intellectually demanding profession. It is designed to appeal first to a natural sense of curiosity, which is aroused by a new approach to a familiar topic. The approach is illustrated by a host of examples drawn from a wide range of applications, from vending machines through fairy stories and games to computer operating systems. The treatment is based on a mathematical theory, which is described by a systematic collection of algebraic laws.
:) "Along with Roscoe's book, they make a perfect pair into the study of a phenomenally powerful language, ideal for modelling of real life processes."