Charles Babbage has been called the ‘Great-Uncle’ of modern computing, a claim that rests simultaneously on his demonstrable understanding of most of the architectural principles underlying the modern computer, and the almost universal ignorance of Babbage’s work before 1970. There has since been an explosion of interest both in Babbage’s devices and the impact they might have had in some parallel history, and in Babbage himself as a man of great originality who had essentially no influence at all on subsequent technological development.
In all this, one fundamental question has been largely ignored: how is it that one individual working alone could have synthesised a workable computer design over a short period, designing an object whose complexity of behaviour so far exceeded that of contemporary machines that it would not be matched for over one hundred years?
The key, as is well understood in modern engineering contexts, is to abstract away from the full complexity of a concrete system. The complexity barrier was also faced by the electronics industry in the 1970’s and 1980’s, and triggered a switch from visual descriptions of large scale digital electronic devices to text-based Hardware Description Languages similar in style to that of a software programming language. Babbage too faced an overwhelming complexity barrier, and his response was indeed to design a system of hardware abstractions which he called his Notation. The ideas allowed him to reason in the abstract about chains of cause and effect in his mechanisms, and he believed the Notation to be his crowning achievement.
His ideas were not taken up: one near contemporary rejected it because there could be many concrete machines that had the same notational description, which of course was precisely the point.
In this talk Professor Johnstone will outline Babbage’s life and times; describe the functioning of the adder that is at the heart of Babbage’s mid-period designs and describe aspects of his notation that pre-date by 150 years similar concepts in Hardware Description Languages.