|
The defining feature of modern
computers which distinguishes them from all other machines is
that they can be programmed. That is to say that a list of
instructions (the program) can be given to the computer and it
will store them and carry them out at some time in the future.
In most cases, computer instructions are simple: add one number
to another, move some data from one location to another, send a
message to some external device, etc. These instructions are
read from the computer's memory and are generally carried out
(executed) in the order they were given. However, there are
usually specialized instructions to tell the computer to jump
ahead or backwards to some other place in the program and to
carry on executing from there. These are called "jump"
instructions (or branches). Furthermore, jump instructions may
be made to happen conditionally so that different sequences of
instructions may be used depending on the result of some
previous calculation or some external event. Many computers
directly support subroutines by providing a type of jump that
"remembers" the location it jumped from and another instruction
to return to that point.
Program execution might be likened to reading a book. While a
person will normally read each word and line in sequence, they
may at times jump back to an earlier place in the text or skip
sections that are not of interest. Similarly, a computer may
sometimes go back and repeat the instructions in some section of
the program over and over again until some internal condition is
met. This is called the flow of control within the program and
it is what allows the computer to perform tasks repeatedly
without human intervention.
Comparatively, a person using a pocket calculator can perform a
basic arithmetic operation such as adding two numbers with just
a few button presses. But to add together all of the numbers
from 1 to 1,000 would take thousands of button presses and a lot
of time — with a near certainty of making a mistake. On the
other hand, a computer may be programmed to do this with just a
few simple instructions.
Once told to run this program, the computer will perform the
repetitive addition task without further human intervention. It
will almost never make a mistake and a modern PC can complete
the task in about a millionth of a second.
However, computers cannot "think" for themselves in the sense
that they only solve problems in exactly the way they are
programmed to. An intelligent human faced with the above
addition task might soon realize that instead of actually adding
up all the numbers one can simply use the equation
1+2+3+...+n = {{n(n+1)} \over 2}
and arrive at the correct answer (500,500) with little work. In
other words, a computer programmed to add up the numbers one by
one as in the example above would do exactly that without regard
to efficiency or alternative solutions. |