Goodreads helps you keep track of books you want to read.
Start by marking “Understanding Computation: From Simple Machines to Impossible Programs” as Want to Read:
Understanding Computation: From Simple Machines to Impossible Programs
Enlarge cover
Rate this book
Clear rating
Open Preview

Understanding Computation: From Simple Machines to Impossible Programs

4.23  ·  Rating details ·  250 ratings  ·  24 reviews
Finally, you can learn computation theory and programming language design in an engaging, practical way. Understanding Computation explains theoretical computer science in a context you’ll recognize, helping you appreciate why these ideas matter and how they can inform your day-to-day programming.

Rather than use mathematical notation or an unfamiliar academic programming l
Paperback, 332 pages
Published May 10th 2013 by O'Reilly Media (first published January 1st 2013)
More Details... Edit Details

Friend Reviews

To see what your friends thought of this book, please sign up.

Reader Q&A

To ask other readers questions about Understanding Computation, please sign up.

Be the first to ask a question about Understanding Computation

Community Reviews

Showing 1-30
Average rating 4.23  · 
Rating details
 ·  250 ratings  ·  24 reviews

More filters
Sort order
Start your review of Understanding Computation: From Simple Machines to Impossible Programs
Jun 24, 2013 rated it really liked it
Despite the fact that there's no real reason to be apologetic, I also haven't yet reached the point in my career as a software developer where I've stopped apologizing for the fact that I have no "real" Computer Science Background.[^1] And/but that's exactly what draws me to books like Understanding Computation by Tom Stuart (O'Reilly, 2013). Stuart describes the books as for:

...programmers who are curious about programming languages and the theory of computation, especially those who don’t have
Stefan Kanev
Aug 28, 2013 rated it it was amazing
Simply put: it's a great book.

It goes over various things in theory of computation. I really like both the depth and the presentation.

Unlike a "Math for Programmers" book I read recently, this one is not shallow. It goes deep enough into all its subjects (automata, state machines, Turing machines, lambda calculus, types, and so on). Things don't just get overviewed – you get enough details to appreciate how those things actually work and what they are used for. Furthermore, every single abstract
Oct 27, 2013 rated it really liked it
While most computer science students will already know the gist of this material, I found this to be a great refresher that also highlighted some other connections I had missed while learning the concepts in a purely academic setting. Stuart's use of Ruby definitely makes the material more approachable, as the semantics of Ruby are perhaps more intuitive to most developers than abstract mathematical notation.

Definitely would recommend for any Rubyist interested in either reacquainting themselves
Rutvik Patel
Jun 09, 2018 rated it it was amazing
An excellent read...
Computation is not only about a "programming" as most of "new age programmers" think. Its much more deeper than that and this book will help you to understand it with the most practical way possible.
I should have come across this book while I was doing graduation but its better to be late than never. ;)
You can think of this book as easy entry to theoretical side of compatibility. Author has done fantastic job explaining all the hard core concepts without using esoteric langua
Nov 21, 2016 rated it it was amazing
Shelves: programming
This book is excellent and delivers on exactly what the description says: "for (Ruby) programmers versed in modern languages, with little or no formal training in computer science". The examples are built up fairly well, given the topic. I was a little surprised at what "computation theory" really meant, so reading it in the context of book club with people who do have more formal training was quite helpful in answering my questions of "but what is the point of this" (usually the answer is: if w ...more
Nov 02, 2013 rated it really liked it
Shelves: tech, astea
Although anybody with a formal CS education will be familiar with most of the theory in the book, it was a fun read, containing lots of example code and interesting experiments. If you are curious to see FizzBuzz implemented in lambda calculus (the solution with Ruby procs is included, spanning over nearly 5 pages) or an overview of a few interesting universal systems, give this book a try.
Sep 18, 2017 rated it really liked it
Shelves: cs
Understanding Computation provides a high-level overview of the theory behind computation. It does so from a highly practical perspective, showing the theoretical concepts using implementations in Ruby.

I used this book as a refresher on the relevant courses during my bachelor. Specifically, I was looking for ways how use the concepts in my work.

Although I had my doubts before reading, the book actually does a great job of covering most of the subjects. The focus on the practical/technical side o
Apr 26, 2020 rated it it was amazing
This book is excellent. Learn about computer science and about Ruby programming at the same time. It's very approachable, very fun, and very mind-bendy. I had to pause it when live dragged me away enough that I couldn't give it the attention it deserved, but I absolutely will return to it later.

I think it makes a great third Ruby book to read; choose the first two well. I'd recommend Eloquent Ruby first, and second either Sinatra: Up And Running or Practical Object Oriented Design, if you want a
Aug 28, 2017 rated it really liked it  ·  review of another edition
Good over of things like FSMs, Turing machines, what it means to be Turing complete, and the limits of computability. I'm not a Ruby guru by any stretch, but his code examples are clear and readable for anyone that can follow basic modern OO code in a language like Ruby. It was fun to see the theory expressed as code and general reasoning instead of formal proofs.

I didn't have any "whoa, amazing" responses to what was presented --- most CS practitioners will encounter this stuff as part of their
Anthony O'Connor
Mar 17, 2020 rated it really liked it  ·  review of another edition
Good intro to the basics

A good introduction to the basics. Machines and programs. Definition of computability. Finite state machines, deterministic and non-deterministic. All the way up to different ways of specifying semantics. BUT I found the overly long overly intricate examples in Ruby hard to follow and something of a distraction.
Short and pithy would have been better. Worth a read though.
Tristan Colgate
Jan 28, 2018 rated it really liked it  ·  review of another edition
This is a highly approachable introduction to computability. It has an exceptionally practical approach, guiding the reader through its various topics using simple ruby code. Even if you've never written ruby (or simply don't like it), do not dismiss the book for its choice of language.
May 10, 2017 rated it liked it
Shelves: real-book
A fun review of the stuff I learned in CS252 ("## - new life!"). Clever work here alongside the ruminations on computing power.
Nicolay Hvidsten
Oct 21, 2013 rated it it was ok
This book does what it promises to do - take the reader from the most basic simplifications of computers (finite automata), through more complex simplifications (Turing machines) to reasoning about 'impossible' problems (The quotation marks are added because these problems will surely be solved one day or another by some clever fellow with too much brain activity and spare time, but are impossible for now). I really enjoyed the fact that the author was able to use Ruby code to illuminate his exa ...more
Jan 05, 2017 rated it really liked it
This book is a little pearl. It aims right at the central topic on what is needed and not needed
to perform computation. It covers important material from operational semantics, automaton
theory, different computational models like the turing machine, lambda calculus, partical recusive functions etc. until it closes with important results of in those fields that affect the decidability of problems and ultimately the reasoning about program behaviour. It provides a practical view on that matter by
Nov 01, 2015 rated it really liked it
Shelves: kcls
It's an interesting book about the notion of computation, algorithms, abstract machines, and programs. Especially useful if you've had practical experience in programming and interested in more theoretical ideas behind it. Still, the book uses Ruby to explain the ideas instead of pure math.
It obviously describes the Turing machines and lambda calculus, and also partial recursive functions, SKI combinator calculus, Jota, tag systems, cyclic tag systems, Conway's Game of Life, Rule 110, and Wolfra
Oct 14, 2013 rated it liked it
Автор використовує Рубі, і пояснює, як створити власну метамову. Суть в тому, щоби на основі цієї штучної мови написати свій компілятор, який би запускав самописні процедури для ядра. Паралельно описується формальна семантика, функціональне програмування і нудна теорія автоматів. Купа коду, читати у форматі електронної книги, як я це робив, просто нема сенсу. Глибока і класна книжка, тільки чого ж бляха Рубі! Очі вилазять, тому що ця метамова на основі Рубі, чим далі абстракції (далі, ніж прості ...more
Cario Lam
Aug 20, 2015 rated it really liked it  ·  review of another edition
First this is not a book about software engineering or programming. Instead it delves into the abstract core of what is the essence of a computer. Concepts like finite automata and Turing machines are a few that are presented and discussed. An engineering or mathematical background is not a requirement to tackling the material. In addition the simulations of the concepts presented are done in Ruby but fear not the author devotes a fair amount of pages to the features of Ruby so the non-programm ...more
Oct 14, 2015 rated it liked it  ·  review of another edition
Shelves: math-and-cs
An interesting but brief look at the world of theoretical computer science. Combines an informal presentation with a focus on the practical implications of the concepts presented (e.g. specific examples of problems solvable by DFAs, DPDAs, etc.; automated checking of programs in spite of results like Rice's theorem). Worth the short read but for those interested in a more in-depth discussion of these topics, I recommend a textbook like Sipser's.
Sep 28, 2013 rated it really liked it
Shelves: owned
This review has been hidden because it contains spoilers. To view it, click here.
Minh Nhật
Jul 21, 2018 rated it really liked it
Shelves: computaion
đã học được món automata T_T
Sep 03, 2014 rated it it was ok
Interesting idea, but the book is rather boring with the code and tech details.
Pouya Kary
Mar 13, 2016 rated it really liked it
loved it, one of the best
Jonathan Lim
Good stuff, but not for me at this time. Maybe when I need a refresher.
Xavier Shay
Jul 07, 2013 rated it really liked it
Fun read, inspired me to try out many different toy programming ideas. I skipped over the Ruby examples because the material made sense to me without it.
rated it liked it
Mar 20, 2019
Jason Liggi
rated it really liked it
Nov 06, 2015
rated it it was amazing
May 03, 2015
Mitchell Boulter
rated it it was amazing
Jan 15, 2019
Diego Essaya
rated it liked it
Apr 06, 2019
Ema Jones
rated it really liked it
Apr 20, 2017
« previous 1 3 4 5 6 7 8 9 next »
There are no discussion topics on this book yet. Be the first to start one »

Readers also enjoyed

  • Code: The Hidden Language of Computer Hardware and Software
  • Working Effectively with Legacy Code
  • A Philosophy of Software Design
  • Haskell Programming From First Principles
  • Learn You a Haskell for Great Good!
  • Designing Data-Intensive Applications
  • Thinking with Types. Type-Level Programming in Haskell
  • Computer Science Distilled: Learn the Art of Solving Computational Problems
  • Functional Programming in Scala
  • Grokking Algorithms An Illustrated Guide For Programmers and Other Curious People
  • A Type of Programming
  • The Elements of Computing Systems: Building a Modern Computer from First Principles
  • Programming with Posix Threads
  • The Pragmatic Programmer: From Journeyman to Master
  • Programming Elixir: Functional |> Concurrent |> Pragmatic |> Fun
  • Mastering Bitcoin: Unlocking Digital Cryptocurrencies
  • Designing Elixir Systems with OTP
  • The Little Elixir & OTP Guidebook
See similar books…

Goodreads is hiring!

If you like books and love to build cool products, we may be looking for you.
Learn more »

News & Interviews

Need another excuse to treat yourself to a new book this week? We've got you covered with the buzziest new releases of the day. To create our...
17 likes · 8 comments