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 the instruction
following that jump instruction.
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.[6] 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.