Computing History Timeline

The Difference Engine

J.H. Müller, an engineer in the Hessian army conceived the idea in a book published in 1786, but failed to find funding to progress this further.

Charles Babbage Difference Engine

In 1822, Charles Babbage proposed the use of such a machine in a paper to the Royal Astronomical Society on 14 June entitled "Note on the application of machinery to the computation of very big mathematical tables." This machine used the decimal number system and was powered by cranking a handle. The British government initially financed the project, but withdrew funding when Babbage repeatedly asked for more money whilst making no apparent progress on building the machine. Babbage went on to design his much more general analytical engine but later produced an improved difference engine design his "Difference Engine Number 2", between 1847 and 1849. Inspired by Babbage's difference engine plans, Per Georg Scheutz built several difference engines from 1855 onwards; one was sold to the British government in 1859.

In 2000, the printer which Babbage originally designed for the difference engine was also completed. The conversion of the original design drawings into drawings suitable for engineering manufacturers' use revealed some minor errors in Babbage's design, which had to be corrected. Once completed, both the engine and its printer worked flawlessly, and still do. The difference engine and printer were constructed to tolerances achievable with 19th century technology, resolving a long-standing debate whether Babbage's design would actually have worked.

Operation of the "Difference Engine"

The difference engine consists of a number of columns, numbered from 1 to N. Each column is able to store one decimal number. The only operation the engine can do is add the value of a column n + 1 to column n to produce the new value of n. Column N can only store a constant, column 1 displays (and possibly prints) the value of the calculation on the current iteration.
The engine is programmed by setting initial values to the columns. Column 1 is set to the value of the polynomial at the start of computation. Column 2 is set to a value derived from the first and higher derivatives of the polynomial at the same value of X. Each of the columns from 3 to N is set to a value derived from the (n - 1) and higher derivatives of the polynomial.

Methods of the "Difference Engine"

As the differential engine cannot do multiplication, it is unable to calculate the value of a polynomial. However, if the initial value of the polynomial (and of its derivatives) is calculated by some means for some value of X, the difference engine can calculate any number of nearby values, using the method generally known as the "Method of Finite Differences".