Programming Distributed Computing Systems
A Foundational Approach
An introduction to fundamental theories of concurrent computation and associated programming languages for developing distributed and mobile computing systems.
Starting from the premise that understanding the foundations of concurrent programming is key to developing distributed computing systems, this book first presents the fundamental theories of concurrent computing and then introduces the programming languages that help develop distributed computing systems at a high level of abstraction. The major theories of concurrent computation—including the π-calculus, the actor model, the join calculus, and mobile ambients—are explained with a focus on how they help design and reason about distributed and mobile computing systems. The book then presents programming languages that follow the theoretical models already described, including Pict, SALSA, and JoCaml. The parallel structure of the chapters in both part one (theory) and part two (practice) enable the reader not only to compare the different theories but also to see clearly how a programming language supports a theoretical model.
The book is unique in bridging the gap between the theory and the practice of programming distributed computing systems. It can be used as a textbook for graduate and advanced undergraduate students in computer science or as a reference for researchers in the area of programming technology for distributed computing. By presenting theory first, the book allows readers to focus on the essential components of concurrency, distribution, and mobility without getting bogged down in syntactic details of specific programming languages. Once the theory is understood, the practical part of implementing a system in an actual programming language becomes much easier.
With the explosive growth of the Internet in the twenty-first century, distributed programming is at the very heart of today's digital society. But it remains a difficult skill to master, both conceptually and practically. Carlos Varela's book makes a big step toward remedying this situation. It uses three languages to cover a full spectrum of distributed abstractions. I highly recommend Varela's book to all developers and researchers who are looking for better ways to express their distributed thoughts!
Peter Van Roy, Professor at Université catholique de Louvain, Louvain-la-Neuve, Belgium
Programming Distributed Computing Systems fills the long-standing need for a self-contained account of distributed programming that combines presentation of underlying formal semantic models along with the design and use of distributed languages and frameworks based upon them. The book's primary focus on actor models makes it an especially useful resource for those studying the foundations of an increasing number of actor-based frameworks, languages, and platforms. Additional coverage of alternative models and languages provides a basis for those pursuing different ways of programming distributed systems.
Doug Lea, Computer Science Department, State University of New York at Oswego
This book deals with one of the most important topics in computer science—it explains what a concurrent programming model is and what it's good for. While most books focus on a specific programming language or technology, this book really shows the power of the mathematical ideas at the basis of popular languages like Java or C#.
Paolo Ciancarini, Professor of Computer Science, Department of Informatics, University of Bologna