What is a computer?
From BenningtonWiki
I think this is a profound question. If you asked one hundred computer professionals or academics this question, you’re likely to get conflicting and disappointing answers. Maybe one or two answers will approach a rigorous definition.
Contents |
I’m wondering
- Does is have to be electronic?
- Does it have to have a keyboard and screen?
- Does it have to be programmable?
- Able to do math?
- Do something complex?
- Does it even have to do something useful?
- Meaningful?
- Logical?
What’s the essence of a computer? What core attributes make something a computer?
Definitions
A computer is an object that manipulates information. – Charles Seife, Decoding the Universe
A computer is an electronic machine for the purpose of computation. – John Y Hsu, Computer Architecture
A computer is a device which, under the direction of a program, can process data, alter its own program instructions, and perform computations and logical operations without human intervention. – Ramon Mata-Toledo, Schaum's Outline of Introduction to Computer Science
A computer is a machine designed for manipulating data according to a list of instructions known as a program. – Wikipedia
A computer is a machine that changes itself. – That guy at the Maker Faire
My definition
A computer is a machine that
- Has state.
- Changes its state.
- Behaves based on its state.
Some observations based on this definition...
- Does a computer need to be programmable? No. Its "program" may be fixed in its construction and never changed. This is often the case in embedded electronic computers where the code is stored in unchanging ROM. A machine that is "hard-wired" to do one thing may be a computer.
- Does a computer need to be electronic? No. Any system that can do these three things can be said to be a computer. A computer can be made out of gears and motors. Or hoses and water. Or people. Or ants. Yeast cells are computers.
- A computer is about "bits" (units of information; ie, state) and what happens to them. The material out of which the bits are made is inconsequential. It's bits, not atoms. “The universe is made of stories, not atoms.” — Muriel Rukeyser, poet.
I’m sometimes tempted to combine numbers 1 and 2 – “Has state that changes” – but I always talk myself out of it because of the nice parallel 1 and 2 have with the implementation of an electronic computing machine. The first requirement, that it has state, is implemented in flip-flops, RAM chips, etc. The second requirement, that its state changes, is implemented in the arithmetic and logic unit and in the circuitry that copies data around. Two fundamentally different kinds of circuits.
Complex adaptive systems
“A complex adaptive system acquires information about its environment and its own interaction with that environment, identifying regularities in that information, condensing those regularities into a kind of ‘schema’ or model, and acting in the real world on the basis of that schema.” — Murray Gell-Mann (The Quark and the Jaguar, p. 17).
A complex adaptive system is a computer. But a computer is not necessarily a complex adaptive system. A complex adaptive system is a particular kind of computer.
I want to learn more about complex adaptive systems. Must finish the Gell-Mann book.
What’s unique about a computer
Some random thoughts... It adapts, changes, morphs. One moment it’s a machine that edits digital photographs, the next moment it’s playing music. It might be controlling a microwave oven or factoring primes. ... The vast differences in scale. Size: single transistors are duplicated a hundred million times on an integrated circuit, and you can understand every bit of the architecture at every level if you try hard enough. Time: from single operations that are measured in nanoseconds to tasks that take years (brute force techniques in cryptography).
How is a player piano like a computer? In my mind, a player piano comes tantalizingly close to being a computer. How could such different machines, the antiquated player piano and the modern computer, be alike? A player piano has state in the form of keys and vibrating strings. A key may be down (striking the string, causing it to vibrate) or up. The paper roll runs through the piano and holes in the paper change the state of the piano. I know, it's uber nerdy to describe a piece of music as being about state and changing state, but that's what the piano does. A player piano has state in the form of its keys and the instructions on the paper roll cause the piano to change its state -- play notes. Where it falls short is that it can't change its behavior based on its state. The piano runs through the paper roll from beginning to end the same way every time, and at no time does the piano pause to examine the state of its vibrating strings and contemplate doing something different.
What would it take to make a player piano a computer? It would need to be able to examine some state and do something different with the song. It would need to be able to skip ahead ten seconds and continue playing from there, or go back five seconds and repeat a section. It would need to be able to play middle C, and then later check if middle C is being played and skip ahead or repeat or not. The paper roll would have to include instructions to look at the keys and do something or not depending on their state.
I don't think the state that it examines needs to be exclusively confined to parts of the piano (ie, the keys). But this is important: The set of things that it can examine and the set of things that it can change must overlap to some degree in order to be a computer. Perhaps it can sense that the light in the room is on or off. If it can also turn the light on or off based on instructions on the paper roll and play different parts of the paper roll based on whether the light's on or off -- then it becomes a computer.
To think more about: Is it really necessary for the set of things it can affect and the set of things that affect it to intersect? I think so, otherwise it's not a machine that can change itself. It's more of a "processor" -- something that takes state from one system and processes it into state in another system. The effect is one directional, there's no feedback. And perhaps feedback is the essence.
