From Wikipedia, the free encyclopedia - View original article
|History of computing|
|Timeline of computing|
It was first described in 1837 as the successor to Babbage's Difference engine, a design for a mechanical computer. The Analytical Engine incorporated an arithmetic logic unit, control flow in the form of conditional branching and loops, and integrated memory, making it the first design for a general-purpose computer that could be described in modern terms as Turing-complete.
Babbage was never able to complete construction of any of his machines due to conflicts with his chief engineer and inadequate funding. It was not until the 1940s that the first general-purpose computers were actually built.
During Babbage's difference engine project, he realized that a much more general design, the Analytical Engine, was possible. The input (programs and data) was to be provided to the machine via punched cards, a method being used at the time to direct mechanical looms such as the Jacquard loom. For output, the machine would have a printer, a curve plotter and a bell. The machine would also be able to punch numbers onto cards to be read in later. It employed ordinary base-10 fixed-point arithmetic.
There was to be a store (that is, a memory) capable of holding 1,000 numbers of 40 decimal digits each (ca. 16.7 kB). An arithmetical unit (the "mill") would be able to perform all four arithmetic operations, plus comparisons and optionally square roots. Initially it was conceived as a difference engine curved back upon itself, in a generally circular layout, with the long store exiting off to one side. (Later drawings depict a regularized grid layout.) Like the central processing unit (CPU) in a modern computer, the mill would rely upon its own internal procedures, to be stored in the form of pegs inserted into rotating drums called "barrels", to carry out some of the more complex instructions the user's program might specify.
The programming language to be employed by users was akin to modern day assembly languages. Loops and conditional branching were possible, and so the language as conceived would have been Turing-complete as later defined by Alan Turing. Three different types of punch cards were used: one for arithmetical operations, one for numerical constants, and one for load and store operations, transferring numbers from the store to the arithmetical unit or back. There were three separate readers for the three types of cards.
In 1842, the Italian mathematician Luigi Menabrea, whom Babbage had met while travelling in Italy, wrote a description of the engine in French. In 1843, the description was translated into English and extensively annotated by Ada Byron, Countess of Lovelace, who had become interested in the engine eight years earlier. In recognition of her additions to Menabrea's paper, which included a way to calculate Bernoulli numbers using the machine, she has been described as the first computer programmer. The modern computer programming language Ada is named in her honor.
Late in his life, Babbage sought ways to build a simplified version of the machine, and assembled a small part of it before his death in 1871.
In 1878, a committee of the British Association for the Advancement of Science recommended against constructing the Analytical Engine.[clarification needed]
In 1910, Babbage's son Henry Prevost Babbage reported that a part of the mill and the printing apparatus had been constructed, and had been used to calculate a (faulty) list of multiples of pi. This constituted only a small part of the whole engine; it was not programmable and had no storage. (Popular images of this section have sometimes been mislabelled, implying that it was the entire mill or even the entire engine.) Henry Babbage's "Analytical Engine Mill" is on display at the Science Museum in London. Henry also proposed building a demonstration version of the full engine, with a smaller storage capacity: "perhaps for a first machine ten (columns) would do, with fifteen wheels in each". Such a version could manipulate 20 numbers of 25 digits each, and what it could be told to do with those numbers could still be impressive. "It is only a question of cards and time", wrote Henry Babbage in 1888, "... and there is no reason why (twenty thousand) cards should not be used if necessary, in an Analytical Engine for the purposes of the mathematician".
In 1991, the London Science Museum built a complete and working specimen of Babbage's Difference Engine No. 2, a design that incorporated refinements Babbage discovered during the development of the Analytical Engine. This machine was built using materials and engineering tolerances that would have been available to Babbage, quelling the suggestion that Babbage's designs could not have been produced using the manufacturing technology of his time.
In October 2010, John Graham-Cumming started a campaign to raise funds by "public subscription" to enable serious historical and academic study of Babbage's plans, with a view to then build and test a fully working virtual design which will then in turn enable construction of the physical Analytical Engine. As of October 2013, no actual construction had been reported.
Babbage is not known to have written down an explicit set of instructions for the engine in the manner of a modern processor manual. Instead he showed his programs as lists of states during their execution, showing what operator was run at each step with little indication of how the control flow would be guided. Bromley (see below) has assumed that the card deck could be read in forwards and backwards directions as a function of conditional branching after testing for conditions, which would make the engine Turing-complete:
The introduction for the first time, in 1845, of user operations for a variety of service functions including, most importantly, an effective system for user control of looping in user programs.
There is no indication how the direction of turning of the operation and variable cards is specified. In the absence of other evidence I have had to adopt the minimal default assumption that both the operation and variable cards can only be turned backward as is necessary to implement the loops used in Babbage’s sample programs. There would be no mechanical or microprogramming difficulty in placing the direction of motion under the control of the user.From Bromley, A.G. Babbage's Analytical Engine Plans 28 and 28a. The programmer's interface. Annals of the History of Computing, IEEE. 2000
In their emulator of the engine, Fourmilab say:
The Engine's Card Reader is not constrained to simply process the cards in a chain one after another from start to finish. It can, in addition, directed by the very cards it reads and advised by the whether the Mill's run-up lever is activated, either advance the card chain forward, skipping the intervening cards, or backward, causing previously-read cards to be processed once again.
This emulator does provide a written symbolic instruction set, though this has been constructed by its authors rather than based on Babbage's original works. For example a factorial program would be written as:
N0 6 N1 1 N2 1 × L1 L0 S1 - L0 L2 S0 L2 L0 CB?11
where the CB is the conditional branch instruction or "combination card' used to make the control flow jump, in this case backwards by 11 cards.
Babbage understood that the existence of an automatic computer would kindle interest in the field now known as algorithmic efficiency, writing in his Passages from the Life of a Philosopher, "As soon as an Analytical Engine exists, it will necessarily guide the future course of the science. Whenever any result is sought by its aid, the question will then arise—By what course of calculation can these results be arrived at by the machine in the shortest time?"
Swedish engineers Georg and Edvard Scheutz, inspired by a description of the difference engine, created a mechanical calculation device based on the design in 1853. Table-sized instead of room-sized, the device was capable of calculating tables, but imperfectly.
From 1872 Henry continued diligently with his father's work and then intermittently in retirement in 1875. Percy Ludgate wrote about the engine in 1915 and even designed his own Analytical Engine (it was drawn up in detail, but never built). Ludgate's engine would be much smaller than Babbage's of about 8 cubic feet (230 L), and hypothetically would be capable of multiplying two 20-decimal-digit numbers in about six seconds.
Despite this ground work, Babbage's work fell into historical obscurity, and the Analytical Engine was unknown to builders of electro-mechanical and electronic computing machines in the 1930s and 1940s when they began their work, resulting in the need to re-invent many of the architectural innovations Babbage had proposed. Howard Aiken, who built the quickly-obsoleted electromechanical calculator, the Harvard Mark I, between 1937 and 1945, praised Babbage's work likely as a way of enhancing his own stature, but knew nothing of the Analytical Engine's architecture during the construction of the Mark I, and considered his visit to the constructed portion of the Analytical Engine "the greatest disappointment of my life". The Mark I showed no influence from the Analytical Engine and lacked the Analytical Engine's most prescient architectural feature, conditional branching. J. Presper Eckert and John W. Mauchly similarly were not aware of the details of Babbage's Analytical Engine work prior to the completion of their design for the first electronic general-purpose computer, the ENIAC.
If the Analytical Engine had been built, it would have been digital, programmable and Turing-complete. However, it would have been very slow. Ada Lovelace reported in her notes on the Analytical Engine: "Mr. Babbage believes he can, by his engine, form the product of two numbers, each containing twenty figures, in three minutes". By comparison the Harvard Mark I could perform the same task in just six seconds. A modern PC can do the same thing in well under a millionth of a second.
|Name||First operational||Numeral system||Computing mechanism||Programming||Turing complete|
|Difference Engine||Never built (until the 1990s)||Decimal||Mechanical||?||No|
|Analytical Engine||Never built||Decimal||Mechanical||Program-controlled by punched cards||Yes|
|Zuse Z3 (Germany)||May 1941||Binary floating point||Electro-mechanical||Program-controlled by punched 35 mm film stock (theoretically Turing-complete but no conditional branch)||Yes (proven in 1998)|
|Atanasoff–Berry Computer (US)||1942||Binary||Electronic||Single purpose; not programmable||No|
|Colossus Mark 1 (UK)||December 1943||Binary||Electronic||Program-controlled by patch cables and switches||No|
|Harvard Mark I – IBM ASCC (US)||May 1944||Decimal||Electro-mechanical||Program-controlled by 24-channel punched paper tape (but no conditional branch)||No|
|ENIAC (US)||July 1946||Decimal||Electronic||Program-controlled by patch cables and switches||Yes|
|Manchester Baby (UK)||1948||Binary||Electronic||First electronic stored program digital computer.||Yes|
|This article may contain minor, trivial or unrelated fictional references. (August 2012)|
|Wikimedia Commons has media related to Analytical Engine.|