in
different locations according to a set of inputs, a fixed set of rules
for processing those inputs, and the prior history of all the inputs
that the computer has seen since it was last reset, until a predefined
set of criteria are met that cause the computer to halt.
We might, after Richard Feynman, call this idea of a computer as a
reader, writer, and modifier of numbers the “file-clerk” model of computing
(as opposed to the aforementioned calculator model). In the file-clerk model,
the computer accesses a large (theoretically infinite) store of sequentially
arranged numbers for the purpose of altering that store to achieve a desired
result. Once this desired result is achieved, the computer halts so that the
now-modified store of numbers can be read and interpreted by humans.
The file-clerk model of computing might not initially strike you as all
that useful, but as this chapter progresses, you’ll begin to understand how
important it is. This way of looking at computers is powerful because it
emphasizes the end product of computation rather than the computation
itself. After all, the purpose of computers isn’t just to compute in the
abstract, but to produce usable results from a given data set.
Basic Computing Concepts
3
NOTE
Those who’ve studied computer science will recognize in the preceding description the beginnings of a discussion of a Turing machine. The Turing machine is, however, too abstract for our purposes here, so I won’t actually describe one. The description that I develop here sticks closer to the classic Reduced Instruction Set Computing (RISC) load-store model, where the computer is “fixed” along with the storage. The Turing model of a computer as a movable read-write head (with a state table) traversing a linear “tape” is too far from real-life hardware organization to be anything but confusing in this discussion.
In other words, what matters in computing is not that you did some math,
but that you started with a body of numbers, applied a sequence of operations
to it, and got a body of results. Those results could, again, represent pixel
values for a rendered scene or an environmental snapshot in a weather
simulation. Indeed, the idea that a computer is a device that transforms one
set of numbers into another should be intuitively obvious to anyone who has
ever used a Photoshop filter. Once we understand computers not in terms of
the math they do, but in terms of the numbers they move and modify, we can
begin to get a fuller picture of how they operate.
In a nutshell, a computer is a device that reads, modifies, and writes
sequences of numbers. These three functions—read, modify, and write—
are the three most fundamental functions that a computer performs, and
all of the machine’s components are designed to aid in carrying them out.
This read-modify-write sequence is actually inherent in the three central
bullet points of our initial file-clerk definition of a computer. Here is the
sequence mapped explicitly onto the file-clerk definition:
A computer is a device that shuffles numbers around from place to
place, reading, writing, erasing, and rewriting different numbers in
different locations according to a set of inputs [ read ], a fixed set of
rules for processing those inputs [ modify ], and the prior history of
all the inputs that the computer has seen since it was last reset
[ write ], until a predefined set of criteria are met that cause the
computer to halt.
That sums up what a computer does. And, in fact, that’s all a computer
does. Whether you’re playing a game or listening to music, everything that’s
going on under the computer’s hood fits into this model.
NOTE
All of this is fairly simple so far, and I’ve even been a bit repetitive with the explanations to drive home the basic read-modify-write structure of all computer operations. It’s important to grasp this structure in its simplicity, because as we