I found a lot of books about how to use computers. Of course, I also found lots of detailed descriptions about how specific programs work; or about how certain features of a computer might work. But I did not find a single, easy-to-read layman's text about what makes a computer a computer.
This is my attempt to remedy that lack. While I work on developing this material, I would appreciate feedback: Hints, criticism, suggestions.
A computer is a machine which can
Over the years, we have greatly improved the ease with which we can get data into the machine, and the sophistication with which we present the results of the calculations. We have also vastly increased the amount of data we can store in the machine at any one time. But the above principles have remained the same, and this is what makes a computer a computer.
The british mathematician Alan Turing proved that while there are an infinity of ways to build a computer, the exact details of the design do not matter (except as a practical matter). Any problem that can be solved by one computer can be solved by any other computer, subject only to practical constraints (the machine must be large enough to hold the description of the problem, and possibly also the description of the other machine which is known to be capable of solving the problem).
As we delve into how these machines work, we will start with some very simple machines, and then discuss how one might change them into something that is closer to how real machines are built today.
Depending on how much of a nerd you are, you will soon start to get bored with this detailed description. Don't worry: That's normal and healthy. When you get bored, come back and follow the link to the BASIC programming language.
Next: Treasure Hunt in the Pigeon House.