History of computing devices
(material in wikipedia and elsewhere).
Here is a rough chronology of computing devices. I don't believe the exact dates or the names of inventors is as important as understanding the order of events. You should also think about, for each device, which parts of the algorithm were carried out by the device, and which were carried by the human operating the machine.
- Clay tablets were used to record commercial transactions in Sumer (4000--1200 BCE). These came in re-writable and write-once varieties, since the tablets were re-usable if they were unbaked, but not if they were baked in a kiln [clay tablets].
- Sliding beads on wires or rods (abacus) have been used since 300 BCE, and they're still in use in some places [1]. These are more portable than large clay tablets, and easily "re-writable" (I keep a Japanese soroban in my office in case of computer failure).
- The Hindu-Arabic number system was used from 300 BCE by mathematicians in the Arabic world. This system had positional notation, a great aid to calculation. It became widely-known coinciding with an upsurge in literacy after Gutenberg's printing press (1436) started an upsurge in printing [number system]. The [Mayans] independently made the same innovations during the same era, using mixed base 20 rather than base 10. [Codices] (books arranged in rectangular sheets) replaced scrolls between the second and fourth centuries CE.
- Mechanical aids for computational tasks were invented, such as [Napier's bones]. Ingenious devices for astronomical calculation, such as Mayan calendars, Stonehenge, or the [antikythera mechanism] were produced.
- You can re-write multiplication of numbers in terms of exponents. For example, 4x32=128 can be re-written as 2^2 x 2^5 = 2^7 = 128. This suggests a shortcut for multiplication which gets more interesting if you can express numbers that are not integer powers in this way. For example, 2^2 is 4 and 2^3 is 8, but what power to I raise 2 to in order to get 6? Great tables of these powers, or [logarithms] were compiled by the 1600. Since they were computed by hand, they also included lots of clerical errors (603 out of over 2 million figures in one early book). These were used well up onto the 1970s, either in the form of printed books of logarithms, or printed onto wood or metal so that you "add" graphically [slide rules].
- In the 1600s mechanical arithmetic calculators were built, with metal gears comprising the hardware. The gears were turned by hand to record each number, and the final position of the gears read off to see the result. Examples were built by Leibniz, [Pascal], and Schickard. There were somewhat error-prone, not programmable, and most computation continued to be done by hand. A mass-produced Arithmometer was built in 1820 by Charles Xavier Thomas.
- Jacquard's loom, in the 1800s, demonstrated the possibility of programmed textiles. Holes punched in a card determined whether a particular thread was held up or down, without requiring the intervention of a human operator [see Jacquard loom].
- Take the positive integers, n=1, n=2, n=3, n=4, n=5 ..., and then their cubes (n x n x n) or 1, 8, 27, 64, 125,.. Consider the difference between consecutive terms of the cubes: 7, 19, 37, 61, and then the differences between those terms: 6, 12, 18, 24, and finally the differences between those terms: 6, 6, 6, ... The last set of differences provides a very simple (constant!) sequence. You could figure out how to reverse the process and generate the cubes of the positive integers without every performing any multiplication (only addition). The same technique, called the method of differences, can be used to find the values of complicated polynomials such as 3n^4 + 5n^3 - 2n^2 + 8n -25. Charles Babbage devised a plan to mechanize this computation of differences, using metal gears and a hand crank for power [Difference engine]. He planned a more elaborate machine, called the [Analytic Engine] which would have included many of the features of a modern computer (it would execute a program record on punched cards). Due to funding and other problems, this machine was never finished. A set of notes on how to program the Analytic Engine was written by Ada Lovelace, sometimes called the first programmer.
- Mechanical computing devices continued to develop through the 1930s. The source of power varied (human muscle, electricity) but information was stored and manipulated in the macroscopic position of devices such as gears, relays, etc. Punched cards or paper tape were used as input as recently as the 1980s (I worked on a dedicated typesetting machine using 6-level paper tape in this era). Some important devices:
- Hollerith's device for tabulating the 1890 U.S. census, which led to the formation of IBM [IBM history]. The interplay of public funding with the birth of a technology giant is typical.
- Analog computers, where information was stored and manipulated in smoothly-varying form, were built using materials that seem pretty strange from today's perspective. Today's computers are digital, and information is stored in states that differ by discrete "jumps" (for example, there is no smooth transition from 0 to 1). An example of what sort of thing can be achieved by an analog approach is the 1936 [water integrator], which implemented the calculus operation of integration by adding sums of water. Analog solutions tend to be very sensitive to the particular problem being solved, so they are hard to transfer to new problems.
- Electro-mechanical computers used a combination of electronic components such as capacitors (which can hold or discharge an electrical charge) and mechanical components such as relays (physical switches turned on or off by a current). Examples of such machines are the German war-time [Z3] or the [American Mark I].
- All-electronic computing began by storing information in vacuum tubes, for example in the American Atanosoff-Berry machine or the British [Colossus] (WWII era). The first computer bug has, apocryphally, been traced to one or more dead moths causing some vacuum tubes to malfunction. This machine, like many of its contemporaries, was dedicated to solving particular problems, and not a general-purpose computer that could solve the entire class of problems anticipated by [Alan Turing]. Turing's simple (but theoretical) Turing machine defines an entire class of problems that can be solved by computers. Later the [ENIAC] could solve any problem that a Turing machine could solve. Programming an ENIAC initially meant re-wiring it!
- Vacuum tubes had various problems. They consumed a huge amount of power, were unreliable while they warmed up, and took up huge amounts of space. Some machines in the late 1940s had 10,000 tubes and took up 93 cubic metres of space (about 9 dumpsters).
- During the 1950s transistors began replacing vacuum tubes, making computers smaller, more reliable, and more efficient.
- Mass produced computers appeared with the 1951 [UNIVAC].
- During the 1950s and 1960s innovation to reduce the size (and power consumption) of components and the integration of many components into a single [integrated circuit] continued, partly funded by the cold-war space and arms race. By the 1970s the technology was in place for [microprocessors] --- the computing power of ENIAC in the palm of your hand --- and the dawn of what we think of as contemporary computers.