Computer science is the study of information processes. A process is a sequence
processes of steps. Each step changes the state of the world in some small way, and the
result of all the steps produces some goal state. For example, baking a cake,
mailing a letter, and planting a tree are all processes. Because they involve physical
things like sugar and dirt, however, they are not pure information processes.
Computer science focuses on processes that involve abstract information rather
than physical things.
The boundaries between the physical world and pure information processes,
however, are often fuzzy. Real computers operate in the physical world: they
obtain input through physical means (e.g., a user pressing a key on a keyboard
that produces an electrical impulse), and produce physical outputs (e.g., an image
displayed on a screen). By focusing on abstract information, instead of the
physical ways of representing and manipulating information, we simplify computation
to its essence to better enable understanding and reasoning.
procedure A procedure is a description of a process. A simple process can be described
just by listing the steps. The list of steps is the procedure; the act of following
them is the process.
A procedure that can be followed without any thought is
algorithm called a mechanical procedure. An algorithm is a mechanical procedure that is
guaranteed to eventually finish.
For example, here is a procedure for making coffee, adapted from the actual
A mathematician is directions that come with a major coffeemaker:
a machine for
turning coffee into
theorems.
Attributed to Paul
Erdos¨
1. Lift and open the coffeemaker lid.
2. Place a basket-type filter into the filter basket.
3. Add the desired amount of coffee and shake to level the coffee.
4. Fill the decanter with cold, fresh water to the desired capacity.
5. Pour the water into the water reservoir.
6. Close the lid.
7. Place the empty decanter on the warming plate.
8. Press the ON button.
Describing processes by just listing steps like this has many limitations. First,
natural languages are very imprecise and ambiguous. Following the steps correctly
requires knowing lots of unstated assumptions. For example, step three
assumes the operator understands the difference between coffee grounds and
finished coffee, and can infer that this use of “coffee” refers to coffee grounds
since the end goal of this process is to make drinkable coffee. Other steps assume
the coffeemaker is plugged in and sitting on a flat surface.
One could, of course, add lots more details to our procedure and make the language
more precise than this. Even when a lot of effort is put into writing precisely
and clearly, however, natural languages such as English are inherently ambiguous.
This is why the United States tax code is 3.4 million words long, but
lawyers can still spend years arguing over what it really means.
Another problem with this way of describing a procedure is that the size of the
Chapter 1. Computing 3
description is proportional to the number of steps in the process. This is fine
for simple processes that can be executed by humans in a reasonable amount
of time, but the processes we want to execute on computers involve trillions of
steps. This means we need more efficient ways to describe them than just listing
each step one-by-one.
To program computers, we need tools that allow us to describe processes precisely
and succinctly. Since the procedures are carried out by a machine, every
step needs to be described; we cannot rely on the operator having “common
sense” (for example, to know how to fill the coffeemaker with water without explaining
that water comes from a faucet, and how to turn the faucet on). Instead,
we need mechanical procedures that can be followed without any thinking.
A computer is a machine that can: computer
1. Accept input. Input could be entered by a human typing at a keyboard,
received over a network, or provided automatically by sensors attached to
the computer.
2. Execute a mechanical procedure, that is, a procedure where each step can
be executed without any thought.
3. Produce output. Output could be data displayed to a human, but it could
also be anything that effects the world outside the computer such as electrical
signals that control how a device operates. A computer
terminal is not
some clunky old
television with a
typewriter in front
of it. It is an
interface where the
mind and body can
connect with the
universe and move
bits of it about.
Douglas Adams
Computers exist in a wide range of forms, and thousands of computers are hidden
in devices we use everyday but don’t think of as computers such as cars,
phones, TVs, microwave ovens, and access cards.
Our primary focus is on universal
computers, which are computers that can perform all possible mechanical
computations on discrete inputs except for practical limits on space and
time. The next section explains what it discrete inputs means; Chapters 6 and 12
explore more deeply what it means for a computer to be universal.
No comments:
Post a Comment