The Analytical Engine
Translated from Russian. Originally published on Aug 9, 2007 as “Аналитическая машина”.

Charles Babbage was a true genius of his time, a brilliant inventor, a hero straight out of Goethe: he was ready to sell his soul to the devil just to peek "behind the scenes" of the universe. We remember him for the "Analytical Engine". Following in the footsteps of the great Pascal, he tried to bring to life the thing that today gathers dust in every home. And while the former invented no more than an elaborate abacus, Babbage was many years ahead of his time and anticipated the creation of computing machines.
Like many great scientists, Babbage saw the root of evil in one thing — inaccurate calculations. In those days people usually relied on tables of precomputed values of various functions. Need the sine of 23 degrees? Open page 32. The table values were computed by people with pen and paper; people made mistakes, the mistakes accumulated, and Babbage was indignant. After he discussed the problem with the astronomer Herschel yet again, his patience ran out. By then he already had a couple of papers that carefully analyzed the losses the state suffered because of "bad" numbers, and he decided to put an end to the problem once and for all.
After long and painful searching he came up with the idea of the "Difference Engine". The machine was supposed to compute the values of some function at successive points — for example,
Take the simplest function,
| x | f(x) | Δf |
|---|---|---|
| 1 | a·1+b | a |
| 2 | a·2+b | a |
| 3 | a·3+b | a |
| 4 | a·4+b | – |
The third column is built using the formula
Suppose we want to compute the values of
| x | f(x) | Δf | Δ²f | Δ³f |
|---|---|---|---|---|
| 2 | 8.000 | 1.261 | 0.126 | 0.006 |
| 2.1 | 9.261 | 1.387 | 0.132 | 0.006 |
| 2.2 | 10.648 | 1.519 | 0.138 | 0.006 |
| 2.3 | 12.167 | 1.657 | 0.144 | – |
| 2.4 | 13.824 | 1.801 | – | – |
| 2.5 | 15.625 | – | – | – |
As the table shows, the values in the last column are all the same, and that is good. It means we only need to compute the values of the first row (by hand) and can then move on row by row. Here is the rule: the value in a given cell equals the sum of the values in the cell above and the cell above-right. For example:
9.261 = 8.000 + 1.261;
1.387 = 1.261 + 0.126;
0.132 = 0.126 + 0.006.
That is exactly what Babbage implemented, and that is why his machine was called the difference (or analytical) engine. It's worth noting that his machine had only 8 memory cells, so it could only evaluate polynomials of degree
An interesting fact is that already in those years Babbage correctly guessed the architecture of future computers. Only his processor was called the mill, the memory — the store, and the bus was a prototype of Ford's assembly line. But how could one ask more of him?