7 ms·
While this is a good point (yes, many of Babbage's difficulties were self-inflicted; arithmetic on 40-digit numbers wasn't needed in mechanical hardware and cou
by svat 5y ago
While this is a good point (yes, many of Babbage's difficulties were self-inflicted; arithmetic on 40-digit numbers wasn't needed in mechanical hardware and could be done in software as the industry started to realize in the 1970s), looking at the historical evolution—how Babbage got to the Analytical Engine—reveals the reason:
• Babbage's first insight was that many books of tables (log tables, sine tables, actuarial tables) could be generated mechanically, using finite differences: basically, any "nice" function can be well-approximated by (say) a sixth-degree polynomial, and that was the basis of his Difference Engine. He did understand this; see the paragraph just before his frequently quoted one:
> One gentleman addressed me thus: “Pray, Mr. Babbage, can you explain to me in two words what is the principle of this machine?” Had the querist possessed a moderate acquaintance with mathematics I might in four words have conveyed to him the required information by answering, “The method of differences.” The question might indeed have been answered with six characters thus—
Δ⁷uₓ = 0
but such information would have been unintelligible to such inquirers.
(This paragraph is followed by the famous:
> On two occasions I have been asked,—“Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?” In one case a member of the Upper, and in the other a member of the Lower, House put this question. I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
— but he does attempt to briefly answer how error-correction could be built into the machine.)
• In short, as he explains, his Difference Engine can be seen as a glorified version of a simple machine that turns a triple of integers (x, y, z) into the triple (x + y, y + z, z). If you start this machine with the triple (0, 1, 2), then it successively turns it into (1, 3, 2), then (4, 5, 2), then (9, 7, 2), then (16, 9, 2), etc — so in n steps you get n^2 as the first number. (In general, starting with (a, b, c) gives the quadratic function a + nb + (n(n-1)/2)c after n steps.) Do this to six places and many digits of precision and you have the Difference Engine, which could compute arbitrary sixth-degree polynomials and could indeed automate a lot of the tables that were being built by hand.
• As Tom Forsyth points out in the replies on the Twitter thread (https://twitter.com/tom_forsyth/status/1359572977377890304 https://twitter.com/tom_forsyth/status/1359572977377890304), for this purpose, he really needed all those digits of precision. (BTW his blog post "Babbage was a true genius" looks great: http://tomforsyth1000.github.io/blog.wiki.html#%5B%5BBabbage%20was%20a%20true%20genius%5D%5D http://tomforsyth1000.github.io/blog.wiki.html#%5B%5BBabbage... )
> What the Difference Engine did was polynomials by forward differencing, which is just a bunch of adds. You actually do need massive precision there, and/or the numbers have a high dynamic range. So until floating-point, yeah you need a lot of digits.
• The big mistake Babbage seems to have done (IMO), after coming up with this idea for the Difference Engine, is to have grand visions of it (it can do all the tables!), think it will be super useful, and present it to the government. Instead of taking private funding, he thought his great invention should be the property of the country and partly funded by government. Of course, like any engineer, he underestimated how long it would take, and meanwhile, while the government entanglement led to it being dragged on for twenty years at various points deciding whether to pour more money in, he came up with loops and branches and arbitrary computation—the Analytical Engine—asked them "hey I have something better than the project you've been funding, what do you think?", and put them in an impossible spot, and was too socially naive to realize that he had become non grata.
• John Nagle (Animats) has commented a few times about how, contrary to the "high culture" story of the evolution of computers (Turing, von Neumann etc), the gradual evolution of "calculators" was itself leading up to computers (e.g. https://news.ycombinator.com/item?id=10636154 https://news.ycombinator.com/item?id=10636154). Something similar appears to have happened with Babbage, where he started with a simple calculating device and, thinking about it more deeply, single-handedly came up with a Turing-complete design and was writing programs for it.
• I started reading Babbage's memoirs "Passages From the Life of a Philosopher" (http://onlinebooks.library.upenn.edu/webbin/book/lookupid?key=olbp36384 http://onlinebooks.library.upenn.edu/webbin/book/lookupid?ke...) after seeing an intriguing Knuth reference to it (see Russ Cox's blog post https://research.swtch.com/tictactoe https://research.swtch.com/tictactoe "Play Tic-Tac-Toe with Knuth"). I'm only a third of the way through it, but unlike the popular image (his plans were never completed, the project was a failure etc), he seems to have been the real deal, really did understand what computation was possible, in many respects he was thinking like a programmer. Too bad machine-making of his time was not up to the task, or we might have had a different history. (According to Wikipedia, William Gibson and Bruce Sterling had the same thought, and came up with their 1990 novel "The Difference Engine", establishing the genre of steampunk.)
- avrionov 5y agoUp-voted you because of the high quality comment. Thank you for the provided links.
- Sharlin 5y ago> BTW his blog post "Babbage was a true genius" looks great: http://tomforsyth1000.github.io/blog.wiki.html#%5B%5BBabbage%20was%20a%20true%20genius%5D%5D http://tomforsyth1000.github.io/blog.wiki.html#%5B%5BBabbage... Highlighting this for extra exposure. For even more info, plus an emulator, see [1] (also linked from the blog post). [1] https://www.fourmilab.ch/babbage/cards.html https://www.fourmilab.ch/babbage/cards.html
- monocasa 5y agoWRT the digit count, the piece Babbage missed, IMO, was that he could continue his overall scheme of using automation to 'inflate' a polynomial to a more generic time/space efficiency tradeoff. He needed all of that precision, but that wasn't required in his mill (the analytical engine's ALU), because you can chain ops with carries like we do today. In fact some of the first electronic computers we used (which fit in a similar niche, calculating polynomials to generate tables, generally for WWII artillery) literally had single digit ALUs in order to get the cost under control enough to be viable. Their results had greater than single digit precision.
- credit_guy 5y agoPeople already had tables of logarithms with lower precision. At the time he did a survey of what tables were available in the world, and it turned out the French had just produced some quite impressive tables, using a lot of manual labor. His value proposition to the British Government was that he can deliver something even better at a fraction of the manual labor (basically only a few people to turn on the crank). The Brits were enamored with the concept of automation at the time, and he made a proof of concept machine with lower precision that he was very happy to demonstrate wherever he would go. Why did he aim for 40 digits? Maybe he did some back of the envelope estimation for the error propagation. If you start with an average error of 10^(-40), then after n additions, in the worst case you can have an error of n*10^(-40). Which is not so bad. But the problem is that in the difference engine you end up adding intermediate results to intermediate results, many, many times over. So if you only look at the worst possible results, you end up needing a lot of precision to start with. Of course, nowadays we know better how to analyze the propagation of errors, but in his time he either didn't know how, or he couldn't convince other people that he can get the total error under control if he used a lower precision throughout. In any case, he completely underestimated the difficulty of scaling the project from his toy example to the full blown final machine.