General Description
The book spans 350 pages. In addition to text, it contains code snippets and images where prose alone would fall short. At the end of each chapter you’ll find a summary of the material, study assignments and practical exercises. I found the book’s material challenging in places.
Introduction
Aside from the opening and closing chapters, the book consists of 7 chapters, each split into 3 themes. Every theme deepens and complements its predecessor. The chapters themselves typically introduce entirely new, independent technologies.
Chapter 2. Execution flows and locks
- Day 1: Mutual exclusion and memory models
- Day 2: Beyond built‑in locks
- Day 3: On the shoulders of giants
Chapter 3. Functional programming
- Day 1: Programming without mutable state
- Day 2: Functional parallelism
- Day 3: Functional competition
Chapter 4. The Clojure path – separating identity and state
- Day 1: Atoms and persistent data structures
- Day 2: Agents and software transactional memory
- Day 3: Diving deep
Chapter 5. Actors
- Day 1: Messages and mailboxes
- Day 2: Error handling and fault tolerance
- Day 3: Distributed applications
Chapter 6. Coordination of sequential processes
- Day 1: Channels and do‑blocks
- Day 2: Multiple channels and I/O
- Day 3: CSP model on the client side
Chapter 7. Data parallelism
- Day 1: GPGPU programming
- Day 2: Dimensionality and workgroups
- Day 3: OpenCL and OpenGL — store data on the GPU
Chapter 8. Lambda architecture
- Day 1: MapReduce
- Day 2: Batch layer
- Day 3: Speed layer
Opinion
This book was intended to be read slowly, but I approached it like any other read. I didn’t complete the practical assignments nor study extra material, so some topics seemed particularly tough. Moreover, the book focuses on rather specialized languages and technologies—Clojure and Erlang—which aren’t familiar to the average developer. That said, get ready for a non‑trivial read; on the bright side, the book is both informative and engaging.