Some of the most often used cliches about writing and telling stories turn out to be good advice as well. A writer is told to "write what she knows" and a storyteller is to "begin at the beginning." And so, I hope to focus on "our" beginnings and the things that "we" know; the beginnings of network and hardware engineers, computer scientists, system administrators and others among a host of geeks, hackers, and phreaks that exist in our world.
The original idea came out of an interchange between Chris Campbell and I about an articled titled Adventures in Babysitting that he had written for Binary Freedom. The article described Chris' foray among our would-be next generation at a local 2600 meeting and featured his utter disbelief at their lack of interest or understanding of their technology history. Names like Admiral Grace Hopper and Ken Thompson didn't come close to ringing a bell. You can tell how disheartening an experience it was for him. These people were his heroes after all (mine as well) and they should be looked up to and seen as the mentors that they are. In order to showcase and explore them, I proposed this column.
So, to begin somewhere near the beginning, let's investigate the Godfather of Computing, Charles Babbage.
Charles Babbage is variously called the Father, Grandfather and Patron Saint of Computing. To many that care, he began it all. I prefer to think of him as the Godfather of Computing and to see why is all part of his story.
Babbage was born into a wealthy, but undistinguished, family in Devonshire, England, in 1791. While still a young boy, Babbage was concerned with questions of "how" over those of "why." The expression of this concern saw the boy dismantling his fair share of toys and mechanical objects around his family's home.
My father-in-law, an engineer, likes to say that engineering is the expression of a personality disorder. The way he sees it, all engineers think and see the world such an odd, but similar, way that it can only be attributed to some sort of mental disorder. When they see something new, they want to pull it apart. When they hear of a problem, whether in their realm of control or not, they will offer "the most efficient" solution. In general, the world is seen as a broken puzzle that only some good solid, and sustained, engineering will fix. I can see his point. Besides, breaking Aunt Edna's antique clock just to see how it works can be considered rude at the very least. On top of which, "normal" social graces are generally thrown out the window, placing the final nail in the coffin of diagnosis.
The funny thing is that the expression of this "disorder" can be fingered early in life. One can watch for the early warning signs. Children that take apart watches or have a penchant for building elaborate structures from blocks may just be engineers in their pupae stage. By all accounts, Babbage definitely was afflicted by the time of his boyhood. His tinkering with things, his dismantling of gadgets, and his inquisitiveness as to how things worked are all sure signs. While the draw of engineering can be sublimated if caught early and treated with care, Charles had no such luck. His fate was sealed when he stumbled upon a copy of the Young Mathematician's Guide in the school library. From that point on, Babbage devoted himself to the pursuit of rational thought and scientific knowledge.
After boarding school, Babbage headed to Cambridge to attend Trinity College. While at Trinity, the precocious student tended to test the patience and abilities of his instructors, a manner that may be familiar to a few among our readers. One rebellious episode saw Babbage and his Analytical Society taking on the very way math was done in England.
At the time, most of England preferred to do complex mathematics using Sir Isaac Newton's "dot notation." The choice of notation was more out of civic pride than actual utilitarianism. Babbage considered this an affront to the way things should be. It went against efficiency and clarity and was a general affront to Babbage's rational senses. He favored instead the scientific notation perfected by Leibniz and used throughout Europe. The Analytical Society, which Babbage helped found, championed the fight to switch to scientific calculation by translating Lacroix's Examples to the Differential and Analytical Calculus from its original French. This achievement is considered one of the main events that helped bring modern mathematics to England.
Though stories about the first notion of Babbage's calculating machine vary, they all seem to focus on Babbage's unwillingness to suffer inefficiency and undue complexity. It seems that Babbage was reviewing some of the many "look-up" tables that were used to aid in calculating complex equations in his day. The number of errors that were contained therein quickly exasperated him and his partners. Since the tables were generally copied by hand or transcribed to plates for printing, it was inevitable that errors would get introduced into the tables during the process. Those errors then just percolated through all the calculations that they were used to perform. One error made hundreds of years ago could potentially misroute ships or hurt financial projections.
Babbage is said to have complained to his colleague that he wished these calculations could be carried out by steam. In that simple complaint lies the beginning of the first programmable mechanical calculator. It would later see life as the Difference Engine and still later as plans for the much more ambitious, and versatile, Analytical Engine. It was 1820.
Babbage's first attempt at a calculating machine took the form of a small six-wheeled model that took advantage of number differences to aid in complex calculations. The machine, dubbed the Difference Engine, was powerful and elegant in its simplicity.
Babbage realized that any process that could be distilled into a repeatable algorithm probably could be mechanized. It's entirely likely that he was inspired to this line of reasoning through his fascination with automata at an early age. Automata were mechanical creations and figurines that imitated life in the form of animals, ballerinas and musicians and such. By following complex, but repeatable, mechanical tricks, some automata were able to seem extraordinarily lifelike. It was this controlled, and nearly invisible, complexity that interested Babbage.
Babbage's table problem was similar to that of the automata. While fixing the errors in copying tables was a complex problem, he realized that embracing the complexity and wrapping it in elegant mechanics was a likely solution. Babbage decided that by using the method of differences, he could create a calculating machine that would aid in these complex calculations. This is how it worked.
This is how the method of differences works. First one takes a set of consecutive numbers and then you perform a set function on each. For sake of ease, let's use the squares of the starting number's. Then you begin to successively look at the differences between the results until you arrive at a common number. It is then possible to work the process in reverse using only addition (something that machines can easily be engineered to do) to fill in the answer to the function for successive beginning numbers in the table. The only requirement is that you begin with a certain amount starting of "known" numbers that will, following the process, eventually come to a form of stasis.
For our example we will use 1, 2, 3, and 4 as our starting points. These numbers will form our x column. The function column, f(x), is then determined by applying the function chosen, squaring in this case, to each number of the x column. This gives 1, 4, 9, and 16 in order. For the next column, we find the differences between each f(x), giving us 3, the difference between 1 and 4, 5, the difference between 4 and 9, and 7, the difference between 9 and 16. We line these numbers in a column, delta 1, so that they are positioned vertically, for ease of calculation, about halfway between the two numbers in the preceding column. Next we calculate the differences between the numbers in delta 1. The answers, placed in a fourth column, delta 2, are 2, the difference between 3 and 5, and 2, the difference between 5 and 7. We have now reached a stasis point where the differences are the same. Once we have reached this point we can now work our way backwards and fill in the table. But first, the starting table looks something like this:
x | f(x) | delta 1 | delta 2 |
1 | 1 | ||
3 | |||
2 | 4 | 2 | |
5 | |||
3 | 9 | 2 | |
7 | |||
4 | 16 |
Now we just work our way backwards on the table to fill in the values for the function of new values of x. First we can check our work. Starting at the top value in the delta 2 column (2), we can add it to the top value in the delta 1 column (3) and should get the next value in line in the delta 1 column. If you don't get 5, check your addition. If you do get the second value in delta 1, then you did your calculations for those two rows correctly and you can move on (see, it's self checking). Now take the value at the top of delta 1 and add it to the top of f(x). The result is the value for the function applied to the next value of x in the table. You can carry this for any value of x as long as you know the values of the function for a few numbers before x, and you only have to use addition to fill in the table after that point. Here is a table with the values for x = 5, to show you how it works for "new" table additions.
x | f(x) | delta 1 | delta 2 |
1 | 1 | ||
3 | |||
2 | 4 | 2 | |
5 | |||
3 | 9 | 2 | |
7 | |||
4 | 16 | 2 | |
9 | |||
5 | 25 |
As you can see, it becomes very easy to add new values to the table. Working backwards from delta 2, two (2) plus delta 1's value of seven (7) yields nine (9) for delta 1, which in turn yields twenty five (25) for the function of x, or f(x). Pretty straightforward. So much so, in fact, that it can be carried out mechanically. Herein was Babbage's genius. He understood, perhaps innately, before any objective proof existed, that complex calculations could be carried out by machine. In order to avoid transcription errors when users of the machine copied the results of the calculation, Babbage's goal was to create a printer of sorts that would copy out the results by itself. The methods that Babbage devised would successfully skirt the sources of table errors that so infuriated the inventive Babbage. It was this understanding, this internal realization of the "correctness" of his solution, that would drive him in the pursuit of the ultimate manifestation of his ideas until the day he died.
Babbage's early prototype of the Difference Engine was met with great public excitement. He became the hit of London's social circle and it was often the mark of a party's success or failure as to whether Babbage had accepted an invitation to attend. This prototype also brought him some initial funding, to the tune of 15,000 to 17,000 pounds (accounts vary), from the British government. This money was to be put into the development of a fully functional Difference Engine and, later, a more complex calculating machine dubbed the Analytical Engine.
Babbage had been able to prove his ideas and gained general acceptance of his theories. His major problem with creating a version beyond his proof-of-concept prototype for the Difference Engine was his constant learning and tinkering. As Babbage worked on the project he was constantly discovering more efficient ways to accomplish his goals and overcome the problems with precision machining that hampered his progress. It is said that as soon as new plans had left his shop for the machinists, he had already come up with a revision of the previous idea. This constant tinkering would be Babbage's undoing and would defeat the progress of nearly every project he undertook. It was as if his mind were so active, that it couldn't slow down long enough to take a snapshot of an idea from which he could work to physical completion.
Babbage never completed a full Difference or Analytical Engine. He died in his London home to a cacophony of street musicians (a group that Babbage sought to have abolished from the city's streets) who had come from across the country to serenade him on his way outside his window. Let's just say that he didn't make many friends among that group (lawsuits will do that). But we still remember him. Beyond the idea that complex calculations could be carried out mechanically, an idea that seems inevitable, what did he contribute?
The beauty of Babbage's ideas and their overall contribution to computer science lies in their completeness. Babbage envisioned a system that was programmable through punch card inputs. It could carry out many varied types of calculations and was as versatile as the instructions that it received; versatility through "software". With his printing ideas, Babbage had basically pioneered the idea of input/output (IO) via punch cards and printers. Taking it a step further, his conception of Analytical engine could store calculations (by punching cards) and continue them later or use the results of certain calculations to continue in different directions based on the outcome; the stored program and programmatic logic respectively.
Unfortunately, Babbage never saw his most dramatic ideas reach reality, though he maintained his vision going so far as to work with Ada, the Countess of Lovelace (and mathematical wunderkind) to work out the proper functioning and use of the machines. It is due to Ada's copious and annotated notes of some of Babbage's lectures, that his ideas weren't lost as a footnote in history and that the awesomeness of his, at least mental, achievement came to be appreciated. Her notes and Babbage's unearthed plans helped this vindication even further when a working and more complex Difference Engine No. 2, the precursor to the Analytical Engine, was constructed by Science Museum in London in 1991. He should be appreciated for his persistence and his ideas. The world could have been wildly different if only he had been moderately successful (read The Difference Engine by Gibson and Sterling for one possible outcome). Babbage is the godfather of computing because he beat everyone to the punch. Using the technology that was available to him, metalworking, engineering, and steam, he was able to approximate the early "computers" of the electrical age.
He was a visionary before his time. We should all hope to be as much.
-----------
© 2001 G. James Jones is a Microcomputer Network Analyst for a mid-sized public university in the midwest. He writes on topics ranging from Open Source Software to privacy to the history of technology and its social ramifications. Verbatim copying and redistribution of this entire article is permitted in any medium if this notice is preserved.