Summaries of the rest of CCS’10 are still coming eventually, but what I want to talk about today is the Difference Engine No. 2 which I have now seen demonstrated twice: Mozilla had its annual meeting at the Computer History Museum a couple years back, and on Saturday last I was there again for SRI’s holiday dinner.

As you know, (Bob,) the Difference Engine was originally designed in the 1820s by Charles Babbage; a tabletop-sized demonstration version was built, but the full-size version was abandoned in 1833 after Babbage fell out with the mechanist he had hired. Babbage went on to design the Analytical Engine, which if completed would have been a fully operational stored-program computer, and later to redesign the Difference Engine with only eight thousand (instead of 25,000) parts. Having blown £17,500 of Parliament’s money (more than a million pounds at current rates) on the first failed project, he was not able to secure funding for either of these, and they remained drawings only. The London Science Museum built two copies of Difference Engine No. 2—that’s the 8000-part version—in the 1990s, with period-appropriate materials and manufacturing tolerances, to prove that it could have been done; one of these is on display at the Computer History Museum.

The Difference Engine is not a computer in the modern sense, or even a desk calculator. It does one thing only: it computes tables of values of mathematical functions. You approximate the function you want as a polynomial of up to 7^{th} degree (you probably need several polynomials, for different ranges of the argument) and you can then have the Engine calculate the value of the polynomial for many different inputs, using finite differences. It stamps the numbers into a bed of plaster of Paris, which can then be used to cast a letterpress plate and run off many copies of a book. There were already such books, but they were computed by hand, and notorious for their errors. The Difference Engine’s failure meant that they kept on being computed by hand; however, Georg and Edvard Scheutz managed to build a miniature version of the Engine in 1857 and use it to print a table of logarithms; also, the first practical mechanical desk calculator went into production in 1851, and was no doubt employed in making tables more accurate.

Nowadays, of course, we could program an electronic computer to typeset such a book, but why would we bother, when the very same computer can just spit out exactly the values we’re interested in, of any function we want? In other words, the spiritual descendants of the Analytical Engine have not only obsoleted the Difference Engine—which I’m sure Babbage himself would have expected—but have made the *job it was made to do* a thing of the past. This hardly ever happens, and nobody (except possibly Vannevar Bush or Murray Leinster) saw it coming—witness the Heinlein juvenile of forgotten title in which the spaceship *had* an electronic computer to navigate it, but to make it work, the human navigation team had to *type in numbers from a book of tables*.

At the demonstration, several people in the audience did not seem to believe, even after it was repeated several times, that no Difference Engines were ever built in Victorian times. This one is a replica? they kept asking. Nope. Production model, serial number two, of the only production run there ever was. It does seem odd to me that, before now, it was so fervently believed that Babbage’s engines *could not* have been built with Victorian manufacturing technology, when they manifestly *did* build similar devices, such as the Scheutz brothers’ difference engine and various desk calculators.

The other telling question was on the order of if you set the Engine up wrong, what happens?

Being so special purpose, of course it can’t have a bug of the sort we are all used to. Its gears can get out of alignment, but it’s got a mechanism to detect that and jam rather than produce an incorrect sum. (I don’t know how the operator would recover from such a jam, however.) And no matter how you set it up, it will compute *some* polynomial; but that might not be the polynomial you wanted. Babbage himself was asked this question, in a less-coherent form (look for On two occasions

).

I’ll leave you all with a vision of what might have been.

Another post on the Babbage Difference engine exhibit my interest you: http://blog.getfirebug.com/2010/03/21/whats-this-other-crank-for/