'We know that the von Neumann-type machine derives its power and flexibility from the fact that it treats all words in store on the same footing. It is often insufficiently realized that, thereby, it gives the user the duty to impose structure wherever recognizable.'
E.W. Dijkstra, Cooperating Sequential Processes, F. Genyus. Ed. Programming Languages, Academic Press, New York, 1968.
For the last forty years, a lot of work and experience has been gathered around concurrent, parallel and distributed programming from the programming language viewpoint. The approaches by Dijkstra, Hoare and Brinch-Hansen developed during the late 1960s and 1970s provided the basic concepts, properties and characteristics for modeling simultaneous processes and the way in which their interaction can be expressed in programming terms. This work represents the basic precedent of what we know today as parallel programming.
Further work and experience has been gathered today, such as the formalization of concepts and their representation in different programming languages for concurrent, parallel and distributed programming. Whenever a program is developed for concurrent, parallel, or distributed execution, most authors refer to these seminal works to express basic communication components, making use of the synchronization mechanisms originally proposed by Dijkstra, Hoare and Brinch-Hansen [And91] [Bac93] [Lyn96] [Har98] [And00]. This book is no ...