Computing hardware has been an essential component of the process of calculation and data storage since it became useful for numerical values to be processed and shared. The earliest computing hardware was probably some form of tally stick; later recording devices include the Phoenician clay shapes which represented quantities or 'counts' of items, probably livestock or grains, in containers. These seem to have been used by the merchants, accountants, and government officials of the time.
Devices to aid computation have evolved from simple recording and counting devices through the abacus, the slide rule, early electronic computers to the sophisticated mobile computing devices we have today. However, it's interesting that even today, an experienced abacus user using a device designed hundreds of years ago can sometimes complete basic calculations more quickly than an unskilled person using an electronic calculator - though for more complex calculations, computers can easily out-perform even the most skilled human.
Humanity has used devices to aid in computation for millennia. One example is a device for establishing equality by weight: the classic scales, later used to symbolize equality in justice. Another is simple enumeration: the checkered cloths of the counting houses served as simple data structures for enumerating stacks of coins, by weight. A more arithmetic-oriented machine is the abacus. �One of the earliest machines of this type was the Chinese abacus, which was invented about 5000 years ago.
Figure 1-1 - The Chinese Abacus
In 1623 Wilhelm Schickard built the first mechanical calculator and thus became the father of the computing era.
Figure 1-2 � Wilhelm Schickard and a replica of his calculating machine
Since his machine used techniques such as cogs and gears that were first developed for clocks, it was also called a 'calculating clock'. It was put to practical use by his friend, the astronomer Johannes Kepler.
Machines by Blaise Pascal (the Pascaline, 1642) and Gottfried Wilhelm von Leibniz (1671) followed. Around 1820, Charles Xavier Thomas created the first successful, mass-produced mechanical calculator, the Thomas Arithmometer, that could add, subtract, multiply, and divide. It was mainly based on Leibniz's work. Mechanical calculators, like the base-ten addiator, the comptometer, the Monroe, the Curta and the Addo-X remained in use until the 1970s.
Leibniz also described the binary numeral system, which is a central ingredient of all modern computers. However, up to the 1940s, many subsequent designs (including Charles Babbage's machines of the 1800s and even ENIAC of 1945) were based on the harder-to-implement decimal system.
Figure 1-3 - A mechanical calculator from 1914
John Napier (1550-1617) - a Scottish mathematician, physicist, and astronomer - noted that multiplication and division of numbers can be performed by addition and subtraction, respectively, of logarithms of those numbers. While producing the first logarithmic tables Napier needed to perform many multiplications, and it was at this point that he designed Napier's bones.
Figure 1-4 � John Napier and Napier�s Bones
Napier�s bones provide a mechanical method for performing multiplication and division, based upon manipulation of rods with printed digits. They became a very popular calculating device because most people lacked these mathematical skills.
The slide rule, invented by William Oughtred in the 1620s, allowed multiplication and division operations to be carried significantly faster than was previously possible. Slide rules were used by generations of engineers and other mathematically inclined professional workers until the invention of the pocket calculator. The engineers in the Apollo program to send a man to the moon made many of their calculations on slide rules, which were accurate to 3 or 4 significant figures.
Figure 1-5 - The slide rule, a basic mechanical calculator, facilitates multiplication and division
In 1801, Joseph-Marie Jacquard developed a loom in which the pattern being woven was controlled by punched cards. The series of cards could be changed without changing the mechanical design of the loom. This was a landmark point in programmability.
In 1833, Charles Babbage moved on from developing his difference engine to developing a more complete design, the analytical engine which would draw directly on Jacquard's punch cards for its programming.
In 1890, the United States Census Bureau used punch cards and sorting machines designed by Herman Hollerith to handle the flood of data from the decennial census mandated by the Constitution. Hollerith's company eventually became the core of IBM. IBM developed punch card technology into a powerful tool for business data processing and produced an extensive line of specialized unit record equipment. By 1950 the IBM card had become ubiquitous in industry and government. The warning printed on most cards, "Do not fold, spindle or mutilate", became a motto for the post-World War II era.
Figure 1-6 - Herman Hollerith invented a tabulating machine using punch cards in the 1880s
The tabulating machine was an electromechanical machine designed to assist in summarizing information and, later, accounting.
Leslie Comrie's articles on punch card methods and W.J. Eckert's publication of Punched Card Methods in Scientific Computation in 1940, described techniques which were sufficiently advanced to solve differential equations, perform multiplication and division using floating point representations, all on punched cards and plug-boards similar to those used by telephone operators. The Thomas J. Watson Astronomical Computing Bureau, Columbia University performed astronomical calculations representing the state of the art in computing.
In many computer installations, punched cards were used until (and after) the end of the 1970s. For example, science and engineering students at many universities around the world would submit their programming assignments to the local computer centre in the form of a stack of cards, one card per program line, and then had to wait for the program to be queued for processing, compiled, and executed. In due course a printout of any results, marked with the submitter's identification, would be placed in an output tray outside the computer center. In many cases these results would comprise solely a printout of error messages regarding program syntax etc., necessitating another edit-compile-run cycle.
Punched cards are still used and manufactured in the current century, and their distinctive dimensions (and 80-column capacity) can still be recognised in forms, records, and programs around the world.
The defining feature of a "universal computer" is programmability, which allows the computer to emulate any other calculating machine by changing a stored sequence of instructions.
In 1837, Charles Babbage described his analytical engine. It was the plan of a general-purpose programmable computer, employing punch cards for input and a steam engine for power. One crucial invention was to use gears for the function served by the beads of an abacus. In a real sense, computers all contain automatic abacuses (technically called the ALU or floating-point unit).
Figure 1-7 - Charles Babbage and a model of part of the Analytical Engine, as displayed at the Science Museum (London)
Babbage's initial idea was to use punch-cards to control a machine that could calculate and print logarithmic tables with huge precision (a specific purpose machine). His idea soon developed into a general-purpose programmable computer, his analytical engine.
While his design was sound and the plans were probably correct, or at least debuggable, the project was slowed by various problems. Babbage was a difficult man to work with and argued with anyone who didn't respect his ideas. All the parts for his machine had to be made by hand and small errors in each item were summed up as huge discrepancies in a machine with thousands of parts. The project dissolved over disputes with the artisan who built parts and was ended with the depletion of government funding.
Ada Lovelace, Lord Byron's daughter, translated and added notes to the "Sketch of the Analytical Engine" by Federico Luigi, Conte Menabrea. She has become closely associated with Babbage. Some claim she is the world's first computer programmer, however this claim and the value of her other contributions are disputed by many.
Figure 1-8 - Augusta Ada King, Countess of Lovelace
A reconstruction of the Difference Engine II, an earlier, more limited design, has been operational since 1991 at the London Science Museum. With a few trivial changes, it works as Babbage designed it and shows that Babbage was right in theory.
The museum used computer-operated machine tools to construct the necessary parts, following tolerances which a machinist of the period would have been able to achieve. Some feel that the technology of the time was unable to produce parts of sufficient precision, though this appears to be false.
The failure of Babbage to complete the engine can be chiefly attributed to difficulties not only related to politics, but also his desire to develop an increasingly sophisticated computer. Personal finance failing and an overly ambitious attitude for his time, eventually led to his failure. Today, many in the computer field term this sort of obsession creeping featuritis. Babbage may have been able to finance this project better if he had been able to work with people better, and with better leadership and management skills the government may well have been more inclined to continue their financial contributions.
Following in the footsteps of Babbage, although unaware of his earlier work, was Percy Ludgate, an accountant from Dublin, Ireland. He independently designed a programmable mechanical computer, which he described in a work that was published in 1909.
By the 1900s, earlier mechanical calculators, cash registers, accounting machines, and so on were redesigned to use electric motors, with gear position as the representation for the state of a variable. Companies like Friden, Marchant and Monroe made desktop mechanical calculators from the 1930s that could add, subtract, multiply and divide. The word "computer" was a job title assigned to people who used these calculators to perform mathematical calculations. During the Manhattan project, future Nobel laureate Richard Feynman was the supervisor of the roomful of human computers, many of them women mathematicians, who understood the differential equations which were being solved for the war effort. Even the renowned Stanislaw Marcin Ulam was pressed into service to translate the mathematics into computable approximations for the hydrogen bomb, after the war.
In 1948, the Curta was introduced. This was a small, portable, mechanical calculator that was about the size of a pepper grinder. Over time, during the 1950s and 1960s, a variety of different brands of mechanical calculator appeared on the market.
Figure 1-9 � Curta Mechanical Calculator
The first desktop electronic calculator was probably Sumlock Comptometer's 1961 Anita C/VIII, which used a Nixie tube display and 177 subminiature thyratron tubes. In June 1963, Friden introduced the four-function EC-130. It had an all-transistor design, 13-digit capacity on a 5-inch CRT, and introduced reverse Polish notation (RPN) to the calculator market at a price of $2200.
Figure 1-10 - Sumlock Comptometer's 1961 Anita C/VIII Electronic Calculator
The acronym 'ANITA' was officially proclaimed to be derived from, variously, A New Inspiration To Arithmetic, or A New Inspiration To Accounting, though there have been rumours that this was also the name of the designer's wife.
The model EC-132 added square root and reciprocal functions. In 1965, Wang Laboratories produced the LOCI-2, a 10-digit transistorized desktop calculator that used a Nixie tube display and could compute logarithms.
With development of the integrated circuits and microprocessors, the expensive, large calculators were replaced with smaller electronic devices.
The era of modern computing began with a flurry of development before and during World War II, as electronic circuits, relays, capacitors and vacuum tubes replaced mechanical equivalents and digital calculations replaced analog calculations. The computers designed and constructed during this period have sometimes been called 'first generation' computers.
First generation computers such as the Atanasoff-Berry Computer, Z3 and Colossus were built by hand, using circuits containing relays or vacuum valves (tubes), and often used punched cards or punched paper tape for input and as the main (non-volatile) storage medium. Temporary, or working storage, was provided by acoustic delay lines (which use the propagation time of sound in a medium such as wire to store data) or by Williams tubes (which use the ability of a television picture tube to store and retrieve data). By 1954, magnetic core memory was rapidly displacing most other forms of temporary storage, and dominated the field through the mid-1970s.
In this era, a number of different machines were produced with steadily advancing capabilities. At the beginning of this period, nothing remotely resembling a modern computer existed, except in the long-lost plans of Charles Babbage and the mathematical musings of Alan Turing and others. At the end of the era, devices like the EDSAC had been built, and are universally agreed to be digital computers.
Alan Turing's 1936 paper has proved enormously influential in computing and computer science in two ways. Its main purpose was an elegant proof that there were problems (namely the halting problem) that could not be solved by a mechanical process (a computer). In doing so, however, Turing provided a definition of what a universal computer is: a construct called the Turing machine, a purely theoretical device invented to formalize the notion of algorithm execution, replacing Kurt G�del's more cumbersome universal language based on arithmetic. Modern computers are Turing-complete (i.e., equivalent algorithm execution capability to a universal Turing machine), except for their finite memory. This limited type of Turing completeness is sometimes viewed as a threshold capability separating general-purpose computers from their special-purpose predecessors.
Turing-Complete (taken from Wikipedia)
Turing completeness, named after Alan Turing, is significant in that every plausible design for a computing device so far advanced can be emulated by a universal Turing machine � an observation that has become known as the Church-Turing thesis. Thus, a machine that can act as a universal Turing machine can, in principle, perform any calculation that any other programmable computer is capable of. However, this has nothing to do with the effort required to write a program for the machine, the time it may take for the machine to perform the calculation, or any abilities the machine may possess that are unrelated to computation.
While truly Turing-complete machines are very likely physically impossible, as they require unlimited storage, Turing completeness is often loosely attributed to physical machines or programming languages that would be universal if they had unlimited storage. All modern computers are Turing-complete in this sense.
However, theoretical Turing-completeness is a long way from a practical universal computing device. To be a practical general-purpose computer, there must be some convenient way to input new programs into the computer, such as punched tape. For full versatility, the Von Neumann architecture uses the same memory both to store programs and data; virtually all contemporary computers use this architecture (or some variant). Finally, while it is theoretically possible to implement a full computer entirely mechanically (as Babbage's design showed), electronics made possible the speed and later the miniaturization that characterises modern computers.
There were three parallel streams of computer development in the World War II era, and two were either largely ignored or were deliberately kept secret. The first was the German work of Konrad Zuse. The second was the secret development of the Colossus computer in the UK. Neither of these had much influence on the various computing projects in the United States. After the war, British and American computing researchers cooperated on some of the most important steps towards a practical computing device.
In 1937, Claude Shannon produced his master's thesis at MIT that implemented Boolean algebra using electronic relays and switches for the first time in history. Entitled A Symbolic Analysis of Relay and Switching Circuits, Shannon's thesis essentially founded practical digital circuit design.
In November of 1937, George Stibitz, then working at Bell Labs, completed a relay-based computer he dubbed the "Model K" (for "kitchen", where he had assembled it), which calculated using binary addition. Bell Labs thus authorized a full research program in late 1938 with Stibitz at the helm. Their Complex Number Calculator, completed January 8, 1940, was able to calculate complex numbers. In a demonstration to the American Mathematical Society conference at Dartmouth College on September 11, 1940, Stibitz was able to send the Complex Number Calculator remote commands over telephone lines by a teletype. It was the first computing machine ever used remotely over a phone line. Some participants of the conference who witnessed the demonstration were John Von Neumann, John Mauchly, and Norbert Wiener, who wrote about it in his memoirs.
In 1938 John Vincent Atanasoff and Clifford E. Berry of Iowa State University developed the Atanasoff-Berry Computer (ABC), a special purpose electronic computer for solving systems of linear equations. The design used over 300 vacuum tubes for high speed and employed capacitors fixed in a mechanically rotating drum for memory. Though the ABC machine was not programmable, it was the first modern computer in several other respects, including the first to use binary math and electronic circuits. ENIAC (Electronic Numerical Integrator and Computer) co-inventor John Mauchly visited the ABC while it was still under construction in June 1941, and its influence over the design of the ENIAC is a matter of contention among computer historians. The ABC was largely forgotten until it became the focus of the lawsuit Honeywell v. Sperry Rand, which invalidated the ENIAC patent.
Figure
1-11 - ENIAC performed ballistics trajectory calculations with 160 kW of power.
Source: U.S. Army Photo, from K. Kempf.
In 1939, development began at IBM's Endicott laboratories on the Harvard Mark I. Known officially as the Automatic Sequence Controlled Calculator, the Mark I was a general purpose electro-mechanical computer built with IBM financing and with assistance from some IBM personnel under the direction of Harvard mathematician Howard Aiken. Its design was influenced by the Analytical Engine. It was a decimal machine which used storage wheels and rotary switches in addition to electromagnetic relays. It was programmable by punched paper tape, and contained several calculators working in parallel. Later models contained several paper tape readers and the machine could switch between readers based on a condition. Nevertheless, this does not quite make the machine Turing-complete. The Mark I was moved to Harvard University to begin operation in May 1944.
The US-built ENIAC, often called the first electronic general-purpose computer, publicly validated the use of electronics for large-scale computing. This was crucial for the development of modern computing, initially because of the enormous speed advantage, but ultimately because of the potential for miniaturization. Built under the direction of John Mauchly and J. Presper Eckert, it was 1,000 times faster than its contemporaries. ENIAC's development and construction lasted from 1941 to full operation at the end of 1945. When its design was proposed, many researchers believed that the thousands of delicate valves (i.e. vacuum tubes) would burn out often enough that the ENIAC would be so frequently down for repairs as to be useless. It was, however, capable of up to thousands of operations per second for hours at a time between valve failures.
ENIAC was unambiguously a Turing-complete device. To 'program' ENIAC, however, meant to rewire it--some say this does not even qualify as programming, otherwise any type of rebuilding some limited computer might be viewed as programming. At the time, however, unaided calculation was seen as enough of a triumph to view the solution of a single problem as the object of a program. (Improvements completed in 1948 made it possible to execute stored programs that were set in function table memory, which made programming less of a one-off effort and more systematic.)
Jon von Neumann, based on ideas developed by Eckhart and Mauchly after recognising the limitations of ENIAC, wrote a widely-circulated report describing a computer design (the EDVAC design) in which the programs and working data were both stored in a single, unified store. This basic design, which became known as the von Neumann architecture, would serve as the basis for the development of the first really flexible, general-purpose digital computers.
During World War II, the British at Bletchley Park achieved a number of successes at breaking encrypted German military communications. The German encryption machine, Enigma, was attacked with the help of electro-mechanical machines called bombes. The bombe, designed by Alan Turing and Gordon Welchman, after Polish bomba, ruled out possible Enigma settings by performing chains of logical deductions implemented electrically. Most possibilities led to a contradiction, and the few remaining could be tested by hand.
Figure 1-12 - Colossus was used to break German ciphers during World War II
The Germans also developed a series of teleprinter encryption systems, quite different from Enigma. The Lorenz SZ 40/42 machine was used for high-level army communications, termed "Tunny" by the British. The first intercepts of Lorenz messages began in 1941. As part of an attack on Tunny, Professor Max Newman and his colleagues helped specify the Colossus. The Mk I Colossus was built in 11 months by Tommy Flowers and his colleagues at the Post Office Research Station at Dollis Hill in London and then shipped to Bletchley Park.
Colossus was the first totally electronic computing device. The Colossus used a large number of valves (vacuum tubes). It had paper-tape input and was capable of being configured to perform a variety of boolean logical operations on its data, but it was not Turing-complete. Nine Mk II Colossi were built (The Mk I was converted to a Mk II making ten machines in total). Details of their existence, design, and use were kept secret well into the 1970s. Winston Churchill personally issued an order for their destruction into pieces no larger than a man's hand. Due to this secrecy the Colossi were not included in many histories of computing. A reconstructed copy of one of the Colossus machines is now on display at Bletchley Park.
Working