📖 Overview
Understanding Computation explores core computer science concepts through hands-on programming examples in Ruby. The book demonstrates how to build a programming language from scratch while teaching fundamental principles of computation.
The text covers finite state machines, parsers, Turing machines, and lambda calculus through practical implementations. Each chapter introduces theoretical concepts followed by coding exercises that reinforce the material.
Mathematical concepts and computer science theory are translated into working code examples throughout the book. The progression moves from basic computational concepts to increasingly complex implementations of theoretical systems.
At its core, this book bridges the gap between abstract computer science theory and practical programming skills. It presents a systematic approach to understanding how computation actually works at a foundational level.
👀 Reviews
Readers report the book makes complex computer science concepts accessible through Ruby code examples. The hands-on approach of building interpreters, parsers and Turing machines helps solidify theoretical concepts.
Liked:
- Clear explanations of lambda calculus and computability theory
- Practical code implementations rather than just math notation
- Approachable writing style for self-taught programmers
Disliked:
- Ruby-specific examples limit broader applicability
- Later chapters become more abstract and difficult to follow
- Some felt examples were overly simplistic for advanced concepts
Ratings:
Goodreads: 4.1/5 (226 ratings)
Amazon: 4.3/5 (49 ratings)
Notable reviews:
"Finally understood lambda calculus after years of trying, thanks to the Ruby examples" - Goodreads reviewer
"Great first half, but lost me in the theoretical parts about universal machines" - Amazon reviewer
"Would have preferred language-agnostic pseudocode instead of Ruby" - Hacker News comment
📚 Similar books
Structure and Interpretation of Computer Programs by Harold Abelson, Gerald Jay Sussman.
This text explores computation fundamentals through Scheme programming while building a deep understanding of interpreters and computational processes.
Types and Programming Languages by Benjamin Pierce. The book presents the theoretical foundations of programming languages through mathematical concepts and practical implementations.
Concepts, Techniques, and Models of Computer Programming by Peter Van Roy, Seif Haridi. The text examines multiple programming paradigms by implementing small languages and exploring their underlying computational models.
The Nature of Computation by Cristopher Moore, Stephan Mertens. This work connects theoretical computer science to mathematics through computational complexity, algorithms, and abstract machines.
Essentials of Programming Languages by Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes. The book builds understanding of programming languages by implementing interpreters and examining language features through small but complete working systems.
Types and Programming Languages by Benjamin Pierce. The book presents the theoretical foundations of programming languages through mathematical concepts and practical implementations.
Concepts, Techniques, and Models of Computer Programming by Peter Van Roy, Seif Haridi. The text examines multiple programming paradigms by implementing small languages and exploring their underlying computational models.
The Nature of Computation by Cristopher Moore, Stephan Mertens. This work connects theoretical computer science to mathematics through computational complexity, algorithms, and abstract machines.
Essentials of Programming Languages by Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes. The book builds understanding of programming languages by implementing interpreters and examining language features through small but complete working systems.
🤔 Interesting facts
🔹 The author, Tom Stuart, deliberately chose Ruby as the programming language for the book's examples because of its expressiveness and readability, making complex computational concepts more accessible.
💡 The book explores the theoretical foundations of computer science without requiring advanced mathematics, making it unique among computation theory texts.
⚡ Throughout the book, readers build their own implementation of a regular expression engine from scratch, demonstrating how fundamental computing tools actually work.
🔸 The concepts covered in the book are the same ones that helped Alan Turing prove that certain computer problems are impossible to solve - known as the "halting problem."
🖥️ The book demonstrates how to create several small programming languages, including interpreters and parsers, giving readers insight into how programming languages themselves function.