Computers are everywhere but what are they?
Programmability is optional
Talking with an Robotics teacher – teaches the basics about Robots to kids – I asked: are Robots computers? The answer was a clear and confident, yes! The dialog then went on roughly as follows:
- P: if you have a Robot with a fixed program, is that still a computer?
- T: yes
- P: a computer is typically an electronic circuit that can run some sort of program. A calculator is an electronic gadget with a fixed program, one that can evaluate arithmetic expressions. Is a calculator a computer?
- T: hmmm… I guess it is
So programmability seems to be an optional feature of computers.
Electronics are optional
I was taught that an algorithm is anything that takes inputs, processes them in some way and then produces an output. The computer is the thing that executes/runs the algorithm and a computer can be realized with non-electronic components.
Before electronics became the main way to realize computers, there were other methods of manufacturing them. For a while humans were called computers and were in charge of solving tons of math problems which in some cases needed not a lot of deep thought or problem solving skills, but simply having the ability to follow a set of predefined instructions mechanically.
The description of the Turing Machine captures the essence of a computer, a computer program and computation, all that with just pen and paper, no need for fancy electronics.
What is a computer program?
In modern computers, a program is usually a text file written in using a special syntax stored somewhere in a disk. The program can be read any time by the computer and its instructions followed blindly.
A program is composed of a sequence of basic instructions plus a few special ones that control the flow of the program. You could say that programming is nothing more than telling a computer how to:
- perform a series of dumb tasks,
- decide which instruction to execute next, and
- execute a series of steps repeatedly. 1
The computer program does not need to make use of all those possibilities, a simple program that outputs a fixed string of text once and then terminates is a perfectly respectable program.
Where is the program?
Can programs be encoded in other ways? Think about a pair of sunglasses, the glass is manufactured so that certain types of light are filtered out; in some sense, filtering some light rays is a decision about what to let through. As light rays come through the glass the rules (program) encoded in the structure of the glass continuously decide which rays should be filtered out. Does that mean that sunglasses computers with a fixed program?
What about other objects? A glass is built (programmed) so that it can contain liquids. The program is again encoded in the structure of the glass. This – perhaps flawed – thinking can be applied to pretty much any manufactured object and even to those that acquire a function that was not originally intended.
If you agree that such objects are all computers in some sense, you might also agree that a computer program can be encoded in the structure of physical objects. Isn't this what we do when we build electronic circuits, we design and build them so that they behave the way we want.
Is everything a computer?
Maybe, I don't know. You decide. I think that Thomas Kuhn would say that a Computer is a paradigm.