"If you care a lot about the future, it shows that you believe in what you're doing now and you think it's worthwhile enough to have some lasting impact." – Syd Mead

Menu

charles babbage

Every once in a while, starting in Jr. high school, I would get the opportunity to do an open subject research paper. Just to set the time period, this was in the early 1980s. We could write it on anything we wanted. Back then I had just discovered computer programming, and I was really into it. I was also beginning to see that computers were historically significant, so I chose that. I already knew about the big mainframes, and I figured that’s where the story would probably start. However, when I looked up my research materials, the earliest reference I found to the invention of the automatic computer was Charles Babbage, who began his work in 1821. I use the word “automatic” here, because I found out that the term “computer” had been around since before Babbage came along. It used to refer to a person who manually calculated numbers for mathematical tables. In fact the term was used this way up through WW II. Babbage looked for a way to make calculations more reliable. Human computers made mistakes, and depending on the mathematical formulation of the tables, this could invalidate everything after the point the mistake was made. Babbage tried to increase reliability by bringing redundancy to the process. He would have two computers working on the same set of numbers, and they would compare each calculation. If one made a mistake it was likely that the other would find it, and the mistake could be corrected before the problem was compounded. Even so, Babbage was frustrated.

His first attempt at solving the problem was to design what he called Difference Engine #1, which would use the method of finite differences to compute polynomials. This technique had been used for years. A mathematician would calculate and “set up” some initial values, and after that less skilled computers could do the rest, since all that was required for using the method was the ability to add, based on a prior set of calculated values. Babbage wanted to automate this process (though the mathematician’s “priming” of the process would still be required).

He built a prototype model in 1831. It was 1/7th of the actual machine he wanted to build. It was very expensive to develop. Apparently this was due in no small part to Babbage’s ineffective management of the project, though from what I read at the time, the main factor was the lack of precise manufacturing of mechanical parts. It was very difficult for anyone to manufacture them at the tolerances Babbage’s design required. The idea of standardized mechanical parts hadn’t been developed yet, and all parts were hand made. What I remember reading is that Babbage is considered the father of modern mechanical engineering. He had to invent his own design techniques.

Babbage showed his prototype to a lot of people, and they were amazed, but he never got wide acceptance for his idea.

In 1834 Babbage had the revolutionary idea of building a programmable calculating machine, which has been called the “Analytical Engine”. The difference engine that Babbage conceived of was a computer, but it had a program “hard wired” into it (I’m using a modern term here). The inputs, and some operating parameters to the program could be changed, to set up different calculations to do, but the machine could only use the method of finite differences. The Analytical Engine concept was more in line with what we’d call a modern computer. It was what I’d now call a “meta-calculator”. The machine would only know how to calculate numbers, but a programmer could program the machine in the steps required to carry out any calculation methodology.

Lady Ada of Lovelace came into the picture at this time. Her role in Babbage’s work was unclear to me from what I read. My memory is that she was an avid supporter of his work, and there has been speculation that she may have been the world’s first computer programmer. This was based on the idea that even though she didn’t have a computer to work on, she helped Babbage develop a programming language for it. Doron Swade of the London Science Museum filled in this picture more and has corrected the record about her involvement. I have video of him talking about her work as part of a talk on Babbage below.

The Analytical Engine was designed to be programmable via. punch cards. Babbage got this idea from a French maker of textiles, named Joseph Jacquard, who used punch cards to drive the parts of a loom to produce designs on his textiles automatically. The Analytical Engine was designed with a printing unit, so it could output results in a permanent format. Babbage never had the chance to build it, though a piece of it was built by his son, which exists in a museum today.

Babbage then created another design, called Difference Engine #2, around 1847. Like the Analytical Engine, he designed it to have a printing unit. And like the Analytical Engine he never got funding to build it.

The ending to Babbage’s life always read, “He died a disappointed, bitter old man.” My memory is the word “penniless” was thrown in as well, though I could be wrong about that. As Swade explained, part of his frustration was that most people in his society never understood his idea of using a machine to calculate numbers. They thought of machines as only being useful for doing manual labor. The idea of creating a “mechanical brain” was a bridge too far. Babbage was one of probably only a handful of people thinking of machines in this way, and his bad management habits discredited his ideas in the eyes of potential funders. His Difference Engine prototype (from his first design) was judged to be a super-expensive flop. In fact Swade says he’s found evidence that Babbage’s mishandling of this project led the British government to not fund another computing machine inventor. So he probably killed the idea of funding computer development for decades.

Bringing Difference Engine #2 to life

In 1985 Doron Swade had the idea to build a working replica of Difference Engine #2. He wanted it to be as authentic as possible, because the idea was to say, “Babbage could’ve built this, and it would’ve worked,” if only he had been able to manage a complex project of that size. Swade gathered a team to build it, going off of Babbage’s original design drawings, which the Babbage family had donated to the museum. They used authentic metallurgy, with modern machining techniques, though they used the same tolerances that Babbage would’ve been able to achieve. So they wanted to work with the same level of engineering difficulty that he would’ve had to deal with, but manufacture the parts more quickly.

The first Difference Engine replica was partly finished in 1991. The drive train and the calculation section were finished, but it did not have a printing unit. Swade went looking for sponsors so that he could build the printing unit, and found Nathan Myhrvold in 1996. Myhrvold agreed to fund the printing unit on the condition that Swade would build him another Difference Engine #2 replica. The printing unit for the first difference engine (in London) was finished in 2002. The second replica was finished in 2008, and was put on display at the Computer History Museum (CHM) in Mountain View, CA. for one year.

I had the opportunity to see the Difference Engine in operation at the CHM when I went out to Mountain View for the Rebooting Computing Summit in January 2009. What I was told was that after the year was up the engine was going to be moved to Myhrvold’s home, though the people at the museum hoped he would allow them to keep it longer. The CHM website still has a page for the Babbage Engine display, so it may still be there.

The reason I’m talking about this now is I finally found some online videos on the Difference Engine that I can show here. The first couple videos are from the unveiling of the 2nd Difference Engine #2 replica at the Computer History Museum in 2008. That’s followed by video of the opening ceremony for the exhibit, featuring Doron Swade and Nathan Myhrvold. Embedding was disabled on the first two of these videos, so follow the links.

One funny anecdote I could relate to is Swade said that Babbage thought God was a programmer. I thought, “Yeah, and he wrote his code in Lisp.” 🙂

There were many interesting details in the CHM presentation, but the part that stuck out for me the most is Swade revealed that according to the historical record he’s been able to review, Ada Lovelace did not have the kind of role in Babbage’s Analytical Engine project that many think she had. Her ideas were no less significant, however.

Swade said flat out that Ada was not the world’s first programmer, as has been speculated, and sometimes stated as fact in the computer science community for decades. He explained that while she did get an algorithm published, it was all based on Babbage’s examples. So Babbage was the first programmer. Swade said that Ada was not a brilliant mathematician, as she is sometimes portrayed. She was a novice. Again, he surmised this from the historical evidence.

What she did contribute that was significant was the idea that numbers could represent symbols, or anything really. This is a surprisingly modern concept of computing for someone coming from the 19th century. She had this vision of computing about 90 years before Alan Turing had the same idea. It’s an idea that is so pervasive in computing now we don’t even think about it. The very text that’s displayed on your screen right now, all of the graphics; all of the audio you hear when you listen to a podcast, or to music; all of the video you see online or on a DVD is just a bunch of numbers to the computer, or more accurately, a series of electrical pulses. Each is represented in a way that we recognize, and it doesn’t seem numeric to us. Instead it’s a collage of sensory elements that help us make sense of what’s inside the machine. This is the vision she had, though in a 19th century context. She didn’t imagine the electronic technology we have, nor the visual displays, but she did imagine some things akin to computer graphics and MIDI music files (Swade mentioned “musical notes” as one of the representations she thought of). Swade said that she didn’t merely put this forward as a suggestion. She was “banging on the table,” saying, “This is what’s important about the Analytical Engine!” How right she was! So her idea is a big deal, and she deserves to be regarded as a thought pioneer in the history of computing.

Babbage listened to her notions, but he didn’t understand them. He designed the Analytical Engine only as a calculating machine, nothing more, though I don’t mean to diminish the power of that vision for its time. However, it’s now undeniable that her vision was greater.

Interestingly, Swade said that Babbage also had some ideas which Turing would flesh out more later. For example, Babbage’s Difference Engine prototype had a column of numbers which would all turn to zeros when a solution to a polynomial had been found. Babbage said if this special column never turned to zeros, there was no solution. This has shades of Turing’s “halting problem” in computational mathematics. I don’t know this for sure, but it sounds like Babbage only applied this idea to polynomials. Turing applied it to all of mathematics.

Swade talked a bit about the Analytical Engine. The scale of it was immense. I had no idea! He said if it were built, the “entry level” model would be as large as a locomotive. A larger design that Babbage conceived of would’ve been half the size of an auditorium. Both would’ve required a steam engine to run them.

Swade said that there were bugs in Babbage’s design of Difference Engine #2 that needed to be worked out. I thought, “Well of course.” Since Babbage never had the chance to build his machine, he didn’t have the reality of trying to build it to force him to look at things he had neglected, and to realize that certain ideas were not going to work. Swade’s team tried to work out these bugs using parts and techniques that Babbage had devised for other devices, or which were available to him at the time the machine was designed. Again, they tried to maintain authenticity.

The following video is another presentation Doron Swade gave on Babbage at Google about a week after the CHM event. I include it here, because while he says some of the same things he said in his CHM presentation, he adds more detail, including demonstrations of how Difference Engine #2 works.

The Difference Engine is something to behold. If you get a chance to see it, either at the CHM, or at the London Science Museum (where it’s on permanent display), I really encourage you to do so. The idea that kind of floored me as I was watching it being run was that this era is the first time in history that people have had the opportunity to see this thing really work! I felt privileged to have the opportunity. My thanks go to Doron Swade and Nathan Myhrvold! Before this, all I knew about it was what I had read in history books. To see it right before me “in the flesh”, as it were, was kind of breathtaking.

The video below was running in a continuous loop near the Difference Engine display. It gives you some sense of what it’s like to watch the Engine run. What I remember is it sounded like a “heavy loom”. The way I’ve described it to others is “It sounded like no computer I’ve heard before.” The “clack” sounds you hear were more like thuds when I heard them. The technology used to record the sound does not pick this up well.

Here are a couple photos I took of it.

Here are a few books that were mentioned in the presentations above:

The Cogwheel Brain, by Doron Swade – This is the UK edition of the book Swade wrote on the history of Babbage’s work, and his own work to build the Difference Engine #2 replica.

The Difference Engine, by William Gibson and Bruce Sterling – This is a science fiction novel set in the 19th century, attempting to imagine how things would have been different if Babbage had succeeded in building his models. It speculates on the creation of a thriving computer industry in Victorian England.