Talk about your brand

Share information about your brand with your customers. Describe a product, make announcements, or welcome customers to your store.

Skip to product information
1 of 1

Finally,you can learn computation theory and programming language design in anengaging, practical way. Understanding Computation explains theoreticalcomputer science in a context you’ll recognize, helping you appreciate whythese ideas matter and how they can inform your day-to-day programming.

Rather than use mathematical notation or an unfamiliar academic programminglanguage like Haskell or Lisp, this book uses Ruby in a reductionist manner topresent formal semantics, automata theory, and functional programming with thelambda calculus. It’s ideal for programmers versed in modern languages, with littleor no formal training in computer science.

  • Understandfundamental computing concepts, such as Turing completeness in languages
  • Discoverhow programs use dynamic semantics to communicate ideas to machines
  • Explorewhat a computer can do when reduced to its bare essentials
  • Learnhow universal Turing machines led to today’s general-purpose computers
  • Performcomplex calculations, using simple languages and cellular automata
  • Determinewhich programming language features are essential for computation
  • Examinehow halting and self-referencing make some computing problems unsolvable
  • Analyzeprograms by using abstract interpretation and type systems

Table of Content

Chapter 1 Just Enough Ruby

  • Interactive Ruby Shell
  • Values
  • Control Flow
  • Objects and Methods
  • Classes and Modules
  • Miscellaneous Features
  • Programs and Machines

Chapter 2 The Meaning of Programs

  • The Meaning of “Meaning”
  • Syntax
  • Operational Semantics
  • Denotational Semantics
  • Formal Semantics in Practice
  • Implementing Parsers

Chapter 3 The Simplest Computers

  • Deterministic Finite Automata
  • Nondeterministic Finite Automata
  • Regular Expressions
  • Equivalence

Chapter 4 Just Add Power

  • Deterministic Pushdown Automata
  • Nondeterministic Pushdown Automata
  • Parsing with Pushdown Automata
  • How Much Power?

Chapter 5 The Ultimate Machine

  • Deterministic Turing Machines
  • Nondeterministic Turing Machines
  • Maximum Power
  • General-Purpose Machines
  • Computation and Computability

Chapter 6 Programming with Nothing

  • Impersonating the Lambda Calculus
  • Implementing the Lambda Calculus

Chapter 7 Universality Is Everywhere

  • Lambda Calculus
  • Partial Recursive Functions
  • SKI Combinator Calculus
  • Iota
  • Tag Systems
  • Cyclic Tag Systems
  • Conway’s Game of Life
  • Rule 110
  • Wolfram’s 2,3 Turing Machine

Chapter 8 Impossible Programs

  • The Facts of Life
  • Decidability
  • The Halting Problem
  • Other Undecidable Problems
  • Depressing Implications
  • Why Does This Happen?
  • Coping with Uncomputability

Chapter 9 Programming in Toyland

  • Abstract Interpretation
  • Static Semantics
  • Applications

Appendix Afterword

Colophon


View full details