Skip to Content
Understanding Computation
book

Understanding Computation

by Tom Stuart
May 2013
Beginner
329 pages
8h 55m
English
O'Reilly Media, Inc.
Content preview from Understanding Computation

Chapter 9. Programming in Toyland

Programming is about using syntax to communicate ideas to a machine. When we write a program, we have an idea of what we want the machine to do when it executes that program, and knowing the semantics of our programming language gives us some confidence that the machine is going to understand what each small piece of the program means.

But a complex computer program is greater than the sum of its individual statements and expressions. Once we’ve plugged together many small parts to make a larger whole, it would be useful to be able to check whether the overall program actually does what we originally wanted it to do. We might want to know that it always returns certain results, for example, or that running it will have certain side effects on the filesystem or network, or just that it doesn’t contain obvious bugs that will make it crash on unexpected inputs.

In fact, there are all sorts of properties that we might want our programs to have, and it would be really convenient if we could just check the syntax of a particular program to see whether or not it has those properties, but we know from Rice’s theorem that predicting a program’s behavior by looking at its source code can’t always give us the right answer. Of course, the most direct way to find out what a program will do is just to run it, and sometimes that’s okay—a lot of software testing is done by running programs on known inputs and checking the actual outputs against the expected ones—but ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Algorithmic Thinking

Algorithmic Thinking

Dan Zingaro
Learning Algorithms

Learning Algorithms

George Heineman

Publisher Resources

ISBN: 9781449330071Errata Page