×

Introduction to concurrency in programming languages. (English) Zbl 1214.68124

Chapman & Hall/CRC Computational Science Series. Boca Raton, FL: CRC Press (ISBN 978-1-4200-7213-6/hbk). xii, 330 p. (2010).
As the title states, the book intends to serve as a first lecture in the domain of concurrency in programming languages for undergraduate students familiar with algorithms and programming. We must acknowledge the authors’ effort materialized in a valuable book dedicated to a significant on-going topic of research. During the last years the computer processor-related research resulted in the appearance of multi-core processors on the consumer market. The software, in general, and software development tools (programming languages, compilers, performance optimization tools) have been left behind.
Thus the authors have to fight against the concepts and sequential programming style that is dominating the market, the vast majority of mainstream programming languages being designed with instruction sequentiality in mind. Current methods for writing concurrent programs are expression of hybrid methods: users can include libraries that facilitate the concurrent programming, while the compilers mainly remain tributary to the sequential paradigm.
The book consist of 13 chapters (Introduction; Concepts in concurrency; Concurrency control; State of the art; High-level language constructs; Historical context and evolution of languages; Modern languages and concurrency constructs; Performance considerations and modern systems; Introduction to parallel algorithms; Pattern: task parallelism; Pattern: data parallelism; Pattern: recursive algorithms; Pattern: pipelined algorithms) and 3 appendices (OpenMP Quick Reference, Erlang Quick Reference, Cilk Quick Reference).
This work discusses various aspects related to parallel algorithm design and implementation. The authors present the topics of traditional programming techniques and models versus concurrent ones. A survey of current state-of-the art techniques in concurrent programming is then followed by an exposure of high-level language constructs for concurrency. The evolution of hardware, from unicore to multicore/manicore processors, is explored in correlation to high-level techniques that emerged. Several chapters are dedicated to design patterns for parallel programming as well as to case studies on genetic algorithms, fractal generation, cellular automata and more.

MSC:

68N19 Other programming paradigms (object-oriented, sequential, concurrent, automatic, etc.)
68N15 Theory of programming languages
68-01 Introductory exposition (textbooks, tutorial papers, etc.) pertaining to computer science
68W10 Parallel algorithms in computer science

Software:

Erlang; CoArray; ARMCI
PDFBibTeX XMLCite