#### Automatic Computation: Charles Babbage and Computational Method

Doron D. Swade

Introduction

The start
of automatic computation is routinely traced to the 19^{th} century and
Charles Babbage’s ambitious designs for his vast but unrealised mechanical
calculating engines. Received perceptions and almost all historical accounts
portray the initial stimulus for the Engines as the wish to eliminate the risk
of error in the production of printed mathematical tables, the essential
processes for which were performed by humans. The genesis episode is captured
in the well-known vignette of Babbage and his friend John Herschel who, in
1821, were checking astronomical tables commissioned by the newly formed
Astronomical Society.^{1} The results
had been calculated manually by two separate human computers. In the course of
checking the independently computed results Babbage, dismayed by the
discrepancies in the two sets of calculations proclaimed, ‘I wish to god these
calculations had been executed by steam’.^{2} If there was a point in time that marked the start of automatic computation,
this was surely it. The historian and novelist Peter Ackroyd, describes this as
‘one of the most wonderful sentences of the 19^{th} century’.^{3}

‘Steam’ has been routinely
taken as a metaphor for the infallibility of machinery. Not only would the
machines calculate without error but mechanical infallibly would extend to
automatic typesetting, printing and inked copy, and the automatic production of
stereotype moulds from which printing plates could be made. With typesetting
and stereotyping integral to the mechanisms, the Engines would eliminate the
risk of human error to which each of the manual processes was prone—calculation, typesetting in loose type, printing, and verification by
proof-checking.^{4} Babbage did
not assume that his engines would be inherently infallible in virtue of being
mechanical but that mechanism could be made to be so by using security devices
that would ensure the integrity of results.

‘Steam’ can also be seen as a metaphor for production, that is to say, a
solution to the problem of supply. In the idiom of production, the Engines
would be a ‘manufactory of numbers’ and in Babbage’s invocation of ‘steam’ we
have the essential extension of the industrial metaphor from goods to
information, from the physical to the mental, from thing to thought.^{5} The episode with Herschel in 1821 was Babbage’s mechanical epiphany. He started
immediately on the design of his first Difference Engine and spent the better
part of the rest of his life in pursuit of the ideal of mechanised calculation,
in the course of which he was led from the mechanisation of arithmetic to fully
fledged general-purpose computation.

The purpose and ‘utility’ of Babbage’s Engines

The received perception is that both the initial purpose and the enduring motive for Babbage’s Engines was the elimination of the risk of error from the production of mathematical tables. Most historical accounts of Babbage and his Engines feature the central role of errors in the motivational landscape for the Engines.

There are two main sources that inform this view. There is the vignette of Babbage and Herschel already mentioned in which Babbage invokes ‘steam’ as the remedial agency for errorless production. That tabular errors provided the jumping-off point is well supported: Babbage documented the episode at least three times with his own role more fulsomely credited with each retelling. He may well have dramatised the episode and aggrandised his role with the passage of time, but that the episode happened and was the starting point of his efforts to build automatic calculating engines is credibly evidenced in published accounts and was nowhere challenged by Herschel who was present at the time. Historians, endlessly charmed by the episode, appear to have translated the initial stimulus of tabular errors into an enduring motive. That Babbage, who was frustratingly reticent about his intentions, continued to work intermittently on the design of his machines for the rest of his life does little to discourage us from the notion that his motives throughout remained unchanged.

The second source that gives tabular errors a
central role is the most substantial contemporary description of Babbage’s
Difference Engine No. 1—a lengthy article published by Dionysius
Lardner in 1834.^{6} Lardner
argues, with hallmark grandiloquence, that printed mathematical tables were
generically flawed. He cites the results of a survey of 40 volumes of tables
randomly selected from a substantial collection in which he compiled the number
of published errata, that is, entries acknowledged by the publishers to be in
error.^{7} He announced with evident glee that there were in excess of known 3,700 errors
and argued that that each error found represented countless yet unfound errors
and that tables were therefore effectively immune to improvement by correction.
He appears to take no account of the progressive ‘purification’ of the host
tables through use over decades and sometimes centuries. He laments the
dangers of flawed tables for science and astronomical navigation and claims,
with the full rigour of rhetoric, that it is only the ‘unerring certainty of
mechanical agency’, that is, Babbage’s Engines, that could remedy the problem.^{8} Errors are the central feature of Lardner’s advocacy for Babbage’s Engines, and
his case has had a defining influence on almost all historical accounts since.

For Lardner the motivational landscape was clear: errors are the problem, machines the solution—a classic problem-solution pairing not unlike the clear-cut story of Harrison’s clocks and the problem of longitude the century before. Because Babbage collaborated with Lardner on the article and provided most of the technical material, and because the article extravagantly championed the Engines, it has been easy to assume that Lardner was Babbage’s mouthpiece—that is that the views expressed by Lardner were Babbage’s. It is Lardner’s article more than anything else that so explicitly identified tabular errors as the ‘problem’ and the Engines as the ‘solution’ and from which we have inherited the primacy of errors in our account of Babbage’s efforts.

The timing and circumstances of Lardner’s article
are revealing. The article was published in the July issue of *Edinburgh Review* in 1834, thirteen years
after Babbage’s first conception of the Difference Engine and a year after the
collapse of the construction project when his engineer, Joseph Clement, downed
tools and fired his workmen following an unresolved dispute with Babbage over
compensation. To uncouple the historical conflation of Lardner’s views and
Babbage’s we need to revisit Babbage’s earliest writings on the Engines before
Lardner came on the scene and framed utility the way he did.

In the six months between June and December 1822, shortly after he had performed the first trials on a prototype model of the Difference Engine, Babbage wrote five papers in which he articulates the capabilities of the machine, and his aspirations for it, this before he entertained any serious ambitions to build a full size machine. The audience was the scientific community including mathematicians and astronomers, many of whom were Babbage’s colleagues and friends. Four of the five papers explore the mathematical promise of the Engines. The exception was an open letter to Sir Humphrey Davy, then President of the Royal Society, which has a promotional agenda that goes beyond the workings and capabilities of the machines. It is here that we find the strongest case for errors as justification. The open letter was clearly written with wider consumption in mind as part of an incipient campaign for a full-scale machine. In his representations to Davy errors feature as a device of persuasion in which benefits were framed in utilitarian terms in support of a prospective construction project.

It becomes clear from these papers that while the elimination of errors in tables does feature, sometimes only incidentally, it does so alongside several other benefits and justifications, central amongst which is the mathematical potential of the machines, which emerges as Babbage’s pre-eminent preoccupation and the focus of his earliest interests. For Babbage the Engines represented a new technology of mathematics and it is this that intrigued and excited him. Errors in human computation were important but, in contrast, mundane. It is the mathematical and computational dimensions that have been obscured by Lardner’s advocacy and this has tended to mislead historians ever since.

Given the prominence of mathematics in Babbage’s
aspirations for his Engines, it is curious that in Lardner’s enthusiastic
championing of Babbage’s Engines there is little mention of the mathematical
prospects for the machines. The circumstances are telling. Lardner made a
lucrative living from writing and lecturing and developed a series of lectures
on Babbage’s Engines for his speaking tour of the northern industrial cities of
England during the first quarter of 1834. However, the institutes and societies
that hosted his lectures opposed the topic ‘as being too *hard* and too *scientific’ *for a popular audience.^{9} Lardner
dumbed down the lectures underplaying the mathematical aspirations of the
engines, and made much of the scandal of tabular errors as a dramatic device to
make the material accessible. The lectures were a resounding success. The
published article that has so influenced subsequent perceptions was a write-up
of the lectures. The false emphasis given to errors has its roots in
showmanship and was used as a simplifying device in response to the need to
appeal to non-specialists. The formula was one tried and tested in the lecture
halls of the industrial north, and the tendentious reframing that foregrounded
the problem of errors migrated from the podium to the published account.

In
casting Babbage’s grand venture as a problem-solution pairing, Lardner
underplayed the richer aspirations for the Engines. In doing so he did
Babbage’s interests fatal damage. The utility of the Engines as a solution to
table making was resoundingly rejected by experts in England and on the
Continent: by George Biddell Airy in England, by Nils Selander in Sweden, and
by Joseph Leverrier in France. By identifying the value of the Engines as the
practical utility of eliminating errors in the production of tables, Lardner
forced the Engine advocates to defend the machine from a position of weakness.
This perhaps explains why Babbage, who while capable of incontinently savagery
in his public criticisms of those he disagreed with, is oddly silent in defence
of the practical utility of his machines to table making. His early writings
support the thesis that his views of their worth went well beyond these
important but mundane benefits.^{10}

Contemporary arguments for the utility of the engines are difficult to navigate. Babbage does not refer in any consistent or systematic way to the benefits of his machines. His written papers do not present a unified or structured advocacy, nor do the arguments build on each other is a progressive way. The papers tend to feature his current preoccupations and it is often difficult to unbundle compound statements of multiple benefits, or to establish relative importance in his arguments.

As part of a larger study of I offer the following map as a navigation aid to Babbage’s arguments for utility and those of other contemporary advocates including Lardner, Herschel, Francis Bacon, and Georg and Edvard Scheutz. The map helps to locate Lardner’s arguments in a broader landscape that includes the mathematical utility of the Engines and the origins of computational process.

The terms in which Babbage and the Engine advocates framed utility can be seen to fall into two categories: remedies for known deficiencies in tables; and new practical and theoretical implications of automatic computation—how better or differently to do what was already being done on the one hand, and the promise of doing what had not yet been done on the other.

The
supposed infallibility of machines would ensure the integrity of the generic
processes involved in the manual production of tables: calculation,
transcription, verification, typesetting, proofreading and printing. Infallibility
ensured quality. The speed of the machine, and the generality of the method of
differences (polynomial approximation within given domains using Taylor’s
expansion of well-behaved mathematical functions) ensured production, and
supply on demand. The metaphor of industrial production as a solution to
the problem of supply was echoed by Lardner, who refers to the ‘mechanical fabrication of tables’, and also by Babbage’s
son, Benjamin Herschel, when he described the Difference Engine as
‘emphatically a machine for manufacturing tables’.^{11} So the elimination of errors is only part
of the remedial benefits for the deficiencies of existing practice, and then
only part of a yet larger picture of utility that extends beyond the
mechanisation of manual processes.

It is Babbage’s mathematical expectations for his engines (the right hand side of the table) that are of particular interest here, as it these new theoretical explorations that contain the seeds of computational method and several key features that reappear in what later became computer science.

Computation as systematic method

Babbage’s ideas on computation as systematic method feature clearly in his earliest writing on the prospects for automated calculation. In his letter to Humphrey Davy Babbage wrote:

Another and very remarkable point in the structure of this machine is, that it will calculate tables governed by laws which have not been hitherto shown to be explicitly determinable, or that it will solve equations for which analytical methods of solution have not yet been contrived’.^{12}

There are two elements of his claim to Davy:
the ability of the machine to calculate series for which there is no given
analytical formula for the *n*^{th} term; and the ability to solve
equations with no known analytical solution.

The roots or solutions of an equation are the values of the independent variable at which the function passes through zero. The standard analytical technique for solving equations was to equate the expression to zero and to solve for the unknown. There was no systematic process for doing this and the success of the process depends on ingenuity, creativity, and often an ability to manipulate the problem into a recognisable form that has a known class of solution. Not only was there no guarantee of solution using such techniques, but there was no way of determining whether or not the equation in question was soluble in principle. If analytical methods failed, then trial and error substitution could be tried. This involves substituting trial values of the independent variable and repeating this process to see if a value of the argument can be found that reduces the function to zero. But the technique was hit and miss. It was regarded as ‘inelegant’ by mathematicians and did not guarantee success.

What was new in Babbage’s description of solving equations with machines was the use of computation as a systematic method of solution. As mentioned earlier, the solution to the equation is the value of the independent variable that reduces the value of the function to zero. Starting with an initial value of the independent variable, each cycle of the Engine generates each next tabular value, and the machine has found a ‘solution’ when the figure wheels giving the tabular result are all at zero. Finding a solution reduces to detecting the all-zero state, and the number of machine cycles taken to achieve this represents the value of the independent variable, which is the solution sought.

Rather than rely on visual
detection of a particular tabular value, Babbage incorporated a bell in his
second machine that rings to alert the operator to the occurrence of specific
conditions in the column of tabular values.^{13} If the bell mechanism can be set to detect the all-zero condition, or a sign
change, then ‘extracting the roots of equations’ involves the operator in
setting the initial values, then cranking the handle to cycle the machine until
the bell rings. He would then halt the machine and read off the number of
cycles the machine had run from one of the registers acting as a cycle counter.
This number is the first root of the equation. If there are multiple roots, as
there would be in most cases, the operator keeps cranking, until the bell rings
again. In the event that there are no roots, the machine continues *ad infinitum* without the zero state or sign change occurring.

There is no reason why detection of the all-zero state should not
automatically halt the machine on the detection of a solution. Babbage left
detailed designs for devices to automatically halt his engines: Difference
Engine No. 2, for example, has a mechanism for automatically halting the Engine
at the end of a printed page.^{14}. In the
context of the Analytical Engine, Luigi Menabrea, in his article based on
Babbage’s Turin seminar, made specific reference to the zero-state halting the
machine automatically.^{15}

In the 1930s Alan Turing formalised the problem of ‘computability’ in terms of the halting criterion of a notional universal machine. His seminal notions of ‘definite method’ and ‘mechanical process’ are explicit in Babbage’s earliest speculations on computation as process.

In the context of solving equations using systematic computation as a method of solution, the machine represents a new technology of mathematics that renders practical methods that would otherwise be prohibitively labour intensive. The feature of the Engine that allows this is the fact of it being automatic, that is, it embodies mathematical or computational rule in mechanism, and has ability to repeat the computational operations by incurring physical rather than mental effort.

In the case of finding the roots,
the general form of the equation is known but no analytical solution is
forthcoming. In the letter to Davy, in Babbage’s first reference to computation
as systematic method, the computational rule is known but with no general form
of the expression for the *n*^{th} term. In this case there is no way arriving at a
distant term without ‘passing through all the previous ones’.^{16} Babbage suggests that automatic machine computation makes serial evaluation of
such functions both systematic and practical.

The power and appeal of analytical formulation derives from its generality, that is, the ability to represent, in a single statement through symbols, any and all specific instances of the relations expressed. The unspoken values of analytical science elevate generality and universality above example and instantiation. A silent premise of contemporary mathematics and philosophy was that example is inferior to generalisation, induction inferior to deduction, empirical truths to analytical truths, and the synthetic to the analytic. Stretching the analogy to social class we can see parallels in Victorian class structure with the social inferiority of trades and manual activity compared with philosophical and intellectual occupations. Journeymen and gentleman, separated by social rank.

Calculation, which involves
specific numerical example, was, in the prevailing culture, implicitly inferior
to formal analysis. The existence of a series that could be produced by
computational rule for which no formal law was known fell outside the comfort
zone of analytical tradition. This was new territory, and Babbage was clearly
intrigued by the general question of how to find analytical laws for series suggested,
or produced, by the Engine. In his letter to David Brewster, Babbage tabulates
the first set of values and differences of a new series suggested by the Engine
and proceeds to derive a general expression for the *n*^{th} term.^{17} The process is essentially one of induction and Babbage acknowledged that the
process is at odds with the traditions of mainstream mathematics. He wrote in
1824 that the unusual route he took in arriving at a general form for a new
series was ‘much more conducive to the progress of analysis, although not so
much in unison with the taste which at present prevails in that science’.^{18} He was aware that computation as a systematic process was off-piste.

Babbage described several instances in which the Engine suggested new series and stimulated new avenues of mathematical analysis, and offers the heuristic role of the Engines as a new and intriguing benefit. One new series was prompted by physical the layout of the Engine.

In Babbage’s calculating engines
numbers are represented by figure wheels engraved with the numbers ‘0’ through
‘9’, arranged in vertical stacks or columns, with one wheel for each digit of
the number (see Illustration 2).^{19} The columns stand alongside one another and are coupled with
internal gearing and control mechanisms that orchestrate the motion of the
wheels to perform the repeated additions required for tabulation by method of
differences. The broadside view of the Engine presents a rectangular matrix of
figure wheels representing the value of the tabular value in one column, the
first difference in the next column, second difference the next column, and so
on. The matrix of wheels suggests that apart from the internal gearing for
repeated addition, individual figure wheels can influence others by *external* connection. Specifically, by externally gearing wheels
together, any given figure wheel (representing units, tens, hundreds etc of a
given number) could add its value to a wheel in another column.

The technique allows feedback,
feed-forward or cross-feeding of individual digits in a way that influences the
step-wise generation of successive results. For example, only the tens wheel on
the second difference column could be coupled to the hundreds wheel on the
tabular value column, leaving intact the machine’s internal gear trains.
Cycling the machine would produce a new series for which there was a clear
computational rule by which to generate each next value, but for which there
was no analytical formula necessarily known or available (see Illustration 3).^{20}

There
is no indication that Babbage physically implemented such cross-coupling on his
first experimental model during 1822, and the early exploration appears to have
been a pen-and-paper speculation. However, the portion of Difference Engine No.
1, assembled by Clement in 1832, clearly shows the additional axes and gears
that allow such cross coupling that were added when Babbage returned to these
ideas, after a decade of distraction constructing the larger machine.^{21}

Babbage’s speculations on finding general analytical laws for empirically generated series are undeveloped. They were inconsequential to the development of mathematics and represent one of the topics outside mainstream analysis that he focused on, but did not pursue. However, in the history of the development of mathematical ideas, the line of enquiry represents the earliest realisations that there was a theoretical dimension to computational method that was important and unexplored, and that computation involved more than the contingent specifics of numerical example.

The prospect of calculating
machines elevated computation to systematic method, and in these early papers
Babbage appears to be struggling to communicate its new status. His writing is
often unclear and suggestive, and tends to slide between specifics and
generalities. However, he appears clearly to have sensed that there was
something new and fundamental in step-wise mechanical process as a realisation
of algorithmic procedure, and that the
automatic calculating engines invited new forms of mathematical analysis.^{22}

Numerical analysis

In a manuscript on the Analytical Engine, dated 26 December 1837, unpublished in his lifetime, Babbage predicted the importance of computational method and numerical analysis as new branches of analysis that would need to be developed to optimise the efficiency of machine computation. After manipulating a formula to show that one version required thirty-five multiplications and six additions to find its value, and a mathematically identical but alternative expression required only five multiplications and one addition, he wrote:

The consequences resulting from this circumstance are important and deserve the attention . . . Whenever engines of this kind exist in the capitals and universities of the world, it is obvious that all those enquirers who wish to put their theories to the test of number, will apply their efforts so to shape the analytical results at which they have arrived, that they shall be susceptible to calculation by machinery in the shortest possible time, and the whole course of their analysis, will be directed towards this object. Those who neglect the indication will find few who will avail themselves of formulae whose computation requires the expense and error attendant on human aid.^{23}

Babbage also anticipates that machine computation would be critical to the progress of science:

I will yet venture to predict that a time will arrive, when the accumulating labour which arises from the arithmetical applications of mathematical formulae, acting as a constantly retarding force, shall ultimately impede the useful progress of the science, unless this or some equivalent method is devised for relieving it from the overwhelming incumbrance of numerical detail.^{24}

Mechanical logic

Babbage’s first complete design was for Difference Engine No. 1, so
called because of the mathematical principle on which it was based, the method
of finite differences. Difference Engine No. 1 was conceived in 1821 and
abandoned unfinished in 1833 after a decade of design and development and
extravagant expense. All Babbage succeeded in completing was one-seventh of the
calculating section, ‘the finished portion of the unfinished engine’ as a
demonstration piece that survives and works impeccably to this day (see Illustration 3).^{25 } This ‘beautiful fragment’ is the first
successful physical realisation of automatic calculation in that mathematical
rule was successfully embodied in mechanism for the first time.^{26} By exerting physical effort the operator could achieve results that up to that
point were achievable only by mental effort. The fact of it being automatic elevates it into a category all its own in
symbolising the start of the era of automatic computation.

The full machine represented a quantum leap in
logical conception and physical size, consisting as it did of 25, 000 parts half
of which had been made when the project was abandoned. The 1830 plan depicts a
machine working to sixteen figures of accuracy with six differences (i.e.
capable of tabulating any 6^{th} order polynomial with 16-digit results (see Illustration 4)), as well as printing, typesetting and stereotyping tabular
results. The later difference engine, Difference Engine No. 2, designed in the
late 1840s, was designed to tabulate any 7^{th} order polynomial to 31 decimal places (see Illustration 5).
The Engine calls for 8,000 parts, weighs between 4 and 5
tonnes, and measures 11 feet long and 7 feet high.^{27}

The
designs for the Difference Engines embody in specific detail several logical
functions and techniques for which there are recognisable modern-day electronic
counterparts. Each of the terms listed is included in ‘apologetics’ –
single quotation marks – as a reminder that that nowhere does Babbage use
these terms and that their use here is anachronical in a backwards projection
from the electronics age. Babbage, it seems, found the need for logical
functions similar to those devised by the pioneers of electronic computing, but
that he implemented in a mechanical medium. The following systems and logical
features are recognisably evidenced in the Engines:^{28}

- Automatic (human intervention in computational process unnecessary)
- Parallel operation (simultaneous operation on each digit of multi-digit numbers)
- Non-destructive addition (recovery of the addend after addition)
- ‘Microprogramming’ (automatic execution of a sequence of minor operations to execute a macro-instruction (see Illustration 6))
- ‘Pipelining’ (the preparation of a result ahead of its need)
- ‘Pulse-shaping’ (cleaning up degraded transitions to ensure digital integrity)
- ‘Binary latching’ (one-bit storage)
- ‘Polling’ (sequenced interrogation of a series of logical states)
- Schmidt trigger (added - for ‘bounce-catching’).

For all its
ingenuity, the Difference Engine was what we would now call a calculator in
that it was not general-purpose or programmable but performed a specific set of
functions to which its operation was absolutely limited—repeated
addition from a set of precalculated initital values to produce, by finite
difference integration, each next tabular value. For all the features of the Difference
Engines it is the designs for the Analytical Engines that mark the essential
transition from calculation to fully-fledged general-purpose computation (see Illustration 7 and Illustration 8).
The transition was accomplished through a
series of largely undocumented steps in a creatively intense period starting in
1834 and refinements preoccupied Babbage on and off for the rest of his life.^{29} His efforts on the Analytical Engines that were sustained for decades after he
had given up on the prospects for building a machine specifically for tabulation,
supports the earlier argument that the mathematical potential of calculating
engines was an enduring preoccupuation.

The Analytical Engines embody another set of
logical and architectural features in addition to many of those featured in the
Difference Engines. These include:^{30}

- Parallel bus (the simultaneous transfer of digits of multi-digit numbers on a multipath ‘highway’)
- Separation of the Store and the Mill (architectural feature in which memory and central processing are identifiably distinct subsystems).
- Internal repertoire of automatically executable functions (including direct multiplication and division)
- Conditional control (automatically taking one or another route depending on intermediate outcome)
- Serial operation (‘fetch-execute’ cycle)
- Anticipating carriage (for the carriage of tens)
- Programmability using punched cards
- Iterative looping (automatic repetition of a sequence of operations a predetermined number of times)
- Parallel processing (multiple Mills)
- Punched card input
- Printed, punched card, graph plotter output
- 50 digit ‘registers’ with double precision results.

Babbage is explicit about the rationale
for the separation of Store and Mill in the logical architecture of the Engine.
In the interests of economy, expensive and complex processing apparatus should
not be distributed through the system but centralised and information brought
to it from memory and returned after processing, with intermediate results also
stored as necessary. The separation of Store and Mill, serial operation
involving a fetch-execute cycle, and input-output devices, all of which are
featured in the Analytical Engine designs, are the essential features of
classic Von Neumann architecture described in Von Neumann’s seminal paper
published in 1945.^{31}

Automatic multiplication was accomplished by accumulation of partial products. Division was achieved by tentative subtraction until a sign change was detected, the lost number restored by addition, followed by multiplication by 10 and repeated subtractions until a further sign change. Counting the number of subtractions between sign changes generated each digit of the quotient in turn. Division required conditional control, in this case detecting a sign change, and taking one or another course of action depending on the outcome.

A
technique that Babbage regarded as amongst the most difficult challenges of the
early designs was that of the ‘anticipating carriage’ and he ranked its
accomplishment as a major breakthrough in both technique and self-confidence.^{32} In the Difference Engines the carriage of tens is handled digit by digit in a
fixed sequence. He refers to the technique as ‘successive carriage’. Babbage
was ruthless in his attempts to minimise execution time. In the successive
carriage technique the serial polling of each digit was time-consuming. The
anticipating carriage mechanism is not what we would now call ‘look ahead’ but
it allows all tens carries in a multi-digit register to be performed in a
single operation and is therefore more time-efficient. As with the successive
carriage, anticipating carriage automatically caters for secondary carries,
that is, carries that result from carries (see Illustration 9).

A major feature of the user interface of the Analytical Engine was programmability using punched cards of which there were at least four main kinds. Operation cards instructed the Mill what operation to perform and a string of fan-folded cards constituted a set of instructions to be executed in a fixed sequence that could be extended without practical limit. Variable cards specified the location in the Store from which a number was to be fetched and where the result was to be returned. Number cards held numerical constants and other data and these had a variety of uses. Finally, combinatorial cards controlled the looping function specifying the number of times a fixed set of operations was to be iterated. The matrix of hole positions on each card was distinctive and each type had its own dedicated card reader (see Illustration 10).

Many of the logical features mentioned have recognisable modern counterparts and it is instructive to look at how Babbage implemented these in a mechanical medium.

The Difference and Analytical Engines are decimal
digital machines. He did consider other number bases (3, 5, 12,
16, 100) but preferred decimal for reasons of engineering efficiency as much as
for the convenience of familiarity.^{33} The engines are decimal in the accepted sense that
the mechanism recognises ten distinct states of each figure wheel. They are
digital in the sense that only discrete angular positions of the figure wheels
are valid representations of digit values. In electronic circuitry the
integrity of digital operation is preserved by the use of flip-flops that is,
the flipping from one state to another once a threshold has been exceeded. In
flip-flop circuitry the intermediate states between two binary states are
unstable and unalterably transitional. However, conventional gear wheels are
inherently analog and in Babbage’s Engines, where number values are represented
by the angular rotation of gear wheels, the intermediate positions between
discrete digits values are stable and viable. What makes Babbage’s Engines
digital is not that the basic elements (toothed wheels) are inherently digital
but the discretising effect of the control mechanisms.

We can see hints of Babbage’s attempts to digitise the motions in the earliest designs for Difference Engine No. 1. Illustration 11 shows a sprung arm with the roller acting on the semi-circular segments. The action of the sprung arm biases the motion to favour discrete intervals defined by the pitch of the segments. The dwell angle at the apex is too large to cause a decisive flip so the switching threshold is not absolutely defined, but the intention and action is clearly recognisable as intended to exclude (or at least discourage) a range of intermediate positions and favour the discrete intervals associated with integral whole number values. Such was the thinking in the 1820s.

By
1847 the thinking had refined and in Difference Engine No. 2 a different
technique was used. Here no attempt is made to exclude intermediate
transitional positions of the figure wheel during normal rotation. Instead a
wedge is driven between the teeth of each figure wheel at critical points in
the cycle (see Illustration 12). The effect of the wedge (called a lock) is
threefold: it ensures continuous minor correction; it locks the wheel to freeze
its value; and performs error detection. The entry of the lock between teeth
corrects small derangements of the geared wheels that might arise from
vibration, episodic external disturbance or wear, and the act of entry provides
a self-correcting feature designed to prevent cumulative derangement from
integral digit values. An electronic analogy can be found in electronic
pulse-shaping where leading and trailing edges of are ‘squared up’, as it were,
to prevent progressive degradation. In the case of more extreme derangement the
wedge performs error detection. When the derangement exceeds 2¼ degrees
the figure wheel is in a position intermediate between digit values and is
invalid. The entry of the wedge will
strike the tooth edge on and the Engine will jam as it designed to do. Jamming
of the locks is a form of error detection and signals that a wheel is in an
indeterminate and therefore undefined position and the digital integrity of the
process has been compromised. At various points in the cycle locks are fully
inserted between the gear teeth to lock the wheels immovably in their current
position. Wedge-shaped locks of this kind are used throughout Difference Engine
No. 2 in both the calculating section as well as the printing and stereotyping
apparatus to ensure digital integrity. Such was Babbage’s confidence in his
security mechanisms that he boasts that the Engine cannot be deranged even by
deliberate intervention, even when running—that it ‘will calculate rightly or
not at all’,^{34} and ‘what it would do it would do truly’ (see Illustration 13 and Illustration 14).^{35}

The mechanical notation

Babbage’s ideas about the promise of machine calculation went beyond abstract speculation. The mechanisms described in the largely unbuilt designs for his machines embody the logical principles of automatic computation as well as the specifics of their execution. Beyond the nuts and bolts of the mechanisms, his Mechanical Notation, a language of signs and symbols of his own devising, provides a formal symbolic description of the operational detail.

The Mechanical Notation is what we would now
perhaps call a hardware description language, in this case an original and
idiosyncratic language of signs and symbols used to describe and the operation
and logic of the complex mechanisms of the Engines as well as optimise the
designs by eliminating redundancy. He regarded this symbolic design aid as ‘one of the most important additions . . . to human knowledge’.^{36} The Notation was a response to the unprecedented complexity and size of the
mechanical systems. He wrote in 1865 that the machines were so intricate and
the chain of events so elaborate, that keeping track would have ‘baffled the
most tenacious memory’.^{37}

Babbage regarded the Notation as a universal descriptive language
of interaction not confined to science or engineering. In the context of the
origins of computing, the Notation represents a serious attempt at formal
symbolic representation of computational logic. The Notation is not a calculus
but a symbolic description that exactly records how parts are interconnected
and the way they are intended to interact. The Notation has three main forms.
One form is that of a timing diagram which describes how motions of parts are
phased and orchestrated in relation to each other (see Illustration 15). Another
has the form of a flow diagram. The example in Illustration 17 traces each
drive train for printing and stereotyping apparatus between 1847 and 1849 for
both the Analytical Engine and Difference Engine No. 2. The
apparatus, which consists of 4,000 separate parts, automatically typesets the
results of the calculation, prints hardcopy results to thirty decimal places,
and impresses the results in two font sizes into stereotype moulds for making
printing plates (see Illustration 16). The format of the output is programmable,
with variable line height, margin widths, number of columns, whether the
results are line-to-line with automatic line wrap, or column-to-column with
automatic column wrap, and an optional blank line every n-lines for ease of reading.
(The output apparatus described was completed in 2002 built to the original
designs and is shown in Illustration 18).^{38} The diagram clearly distinguishes control inputs and data inputs. The data
inputs are the outputs from the calculating section. The final form of the
Notation is a tabular form usually included on the same design drawings
alongside the mechanisms it describes (see Illustration 19).

There is little in the way of detailed explanation of the Notation in Babbage’s writing but he did record the principles and general guidelines, and left prolific examples of its use. In the tabular form individual parts are identified with a capital in one of at least three alphabetic forms, Roman, Etruscan (sans-serif), and a form of copperplate script. Upright letters identify framing pieces, inclined letters identify moveable parts. The subscripts and superscripts on each letter record the part's identity, form, relationship to other parts, and motion. The tabular form is at component level. The flow diagrams and timing diagrams can be seen as system-level descriptions.

Despite his pride in the system, and the undoubted use to which he put it, the Notation has enjoyed spectacular obscurity ever since.

Charles Babbage is widely recognised as the great ancestral figure
in the history of computing. His work embodies the earliest original
exploration of the principles of general-purpose computation. He designed the
first successful automatic computing machines, explored computational method, the
mathematical potential of computing engines, and formalised the logic of his
designs in a generalised symbolic language. The scale and scope of his work
provide convincing evidence that calling him the first computer pioneer is a
well-founded tribute.

References

1 For the
political background to the role of the Astronomical Society in commissioning
new tables see Ashworth, William J. ‘The Calculating Eye:
Baily, Herschel, Babbage and the Business of Astronomy.’ __British
Journal for the History of Science__ 27 (1994): 409-41. Also Swade, Doron.
‘Calculation and Tabulation in the 19th Century: George Biddell Airy
Versus Charles Babbage.’ PhD. University College London, 2003, pp. 125-6.

2 There are
three known accounts of this episode written by Babbage: 1822, 1834 and 1839.
See Collier, Bruce. __The
Little Engines That Could've: The Calculating Engines of Charles Babbage__. 2
ed. New York: Garland, 1990, pp. 14-18 (Harvard PhD thesis, 1970). The quotation cited is taken from the third account
which appears in the Buxton memoir written between 1872 and 1880 but not
published until 1988, see Hyman, Anthony, ed. __Memoir of the Life and
Labours of the Late Charles Babbage Esq. F.R.S. By H. W. Buxton__. Vol. 13.
Cambridge, Massachusetts: Tomash, 1988, p. 46. The first account leaves it open as to whether it was Babbage or
Herschel that made the suggestion. In the second and third accounts Babbage
claims ownership for himself. All three accounts contain the appeal to steam.
The third account is the most dramatised and is the only one to include direct
speech.

3 Ackroyd, Peter. __Dan
Leno and the Limehouse Golem__. London: Minerva, 1994, p. 116.

4 See Swade, Doron.
‘The 'Unerring Certainty of Mechanical Agency': Machines and Table Making
in the Nineteenth Century.’ __The
History of Mathematical Tables: From Sumer to Spreadsheets__. Eds. Martin
Campbell-Kelly, et al. Oxford: Oxford University Press, 2003. 143-74.

5 See Schaffer, Simon.
‘Babbage's Intelligence: Calculating Engines and the Factory System.’ __Critical Enquiry__ 21 (1994): 203-27.

6 Lardner, Dionysus.
‘Babbage's Calculating Engine.’ __Edinburgh Review__ 59 (1834):
263-327. Reprinted in Campbell-Kelly, Martin, ed. __The Works of Charles
Babbage__. (Henceforth *Works) *11 Vols. London: William Pickering,
1989, Vol. 2, 263-327.

7 The
substantial collection was quite possibly Babbage’s. For additional background
see Campbell-Kelly, Martin. ‘Charles Babbage's Table of
Logarithms.’ __Annals of the History of Computing__ 10.3 (1988):
159-69.

8 The
phrase is Lardner’s (1834). See *Works*,
Vol. 2, p. 169.

9 Lardner to Babbage, 3 January 1834, British Library, Add Ms 37188, f. 140.

10 For more detailed treatment of Lardner and Babbage see Swade, Doron. ‘Calculation and Tabulation in the 19th Century: George Biddell Airy Versus Charles Babbage.’ PhD. University College London, 2003, 159-172..

11 Lardner (1834), *Works*, Vol. 2, p. 138; B.
H. Babbage (1872). *Works*, Vol. 2, p. 226.

12 A letter to Sir Humphrey Davy, Bart., President
of the Royal Society, ‘on the application of machinery to the purpose of
calculating and printing mathematical tables.’ London: Cradock and Joy, 1822.
Reprinted in *Works*, Vol. 2, pp. 5-14. See p. 7.

13 For reference
to the use of warning bells, see for example, Lardner (1834), *Works*, Vol. 2, p. 169.

14 See Swade, Doron. __Charles
Babbage's Difference Engine No.2: Technical Description__: Science Museum
Papers in the History of Technology, pp. 44-5.

15 Menabrea, Luigi
Frederico. ‘Notions Sur La Machine Analytique De M. Charles Babbage.’ __Bibliotèque universelle de Genève__ 41 (1842): 352-76. Reprinted in *Works*,
Vol.3, pp. 62-68. See p. 109.

16Babbage to David Brewster, 6 November 1822,
published as ‘On the Theoretical Principles of the
Machinery for Calculating Tables.’ __Edinburgh Philosophical Journal__ 8 (1823): 122-28. Reprinted in *Works*, Vol. 2, 38-43. See p. 39.

17 *Ibid.*

18 Babbage, Charles.
‘On the Determination of the General Term of a New Class of Infinite
Series.’ __Transactions of the Cambridge Philosophical Society__ 2
(1826): 217-25. Reprinted in *Works*, Vol. 2, pp. 61-8. See p. 62.

19 The physical organisation of the experimental machine appears to have been similar to that of the version of Difference Engine No. 1 a portion of which was constructed and for which plans survive.

20 These ideas are considered by Collier in the context of the genesis of the Analytical Engine and the notion of the Engine ‘eating its own tail’. The reflexivity of the process is seminal to the transition from calculator to general-purpose computation. See Collier (1990), pp. 107-116.

21 For details
of the mechanical additions see Roberts, C J D. ‘Babbage's Difference Engine
No. 1 and the Production of Sine Tables.’ __Annals of the History of
Computing__ 9.2 (1987): 210-12. Also Collier (1990), p. 112.

22 Babbage
wrote that the Engine’s stimulus for his enquiries was ‘singular in the history
of mathematical science’. See Babbage (1826), *Works*, Vol. 2, p. 61. For a thematic treatment of Babbage as an
algorithmic thinker see Grattan-Guinness, Ivor. ‘Charles Babbage as an
Algorithmic Thinker.’ __IEEE Annals of the History of Computing__ 14.3
(1992): 34-48.

23 Babbage, Charles. __On
the Mathematical Powers of the Calculating Engine__. Buxton MSS collection,
Oxford (1837). Reprinted in *Works*, Vol. 3, 15-61. See pp. 60-1.

24 Babbage to
David Brewster, 6 November 1822. Reprinted in *Works*,
Vol. 2, 38-43. See p. 43.

25 The quoted
phrase is Babbage’s. See Babbage, Charles. __Passages from the Life of a Philosopher__.
London: Longman, Green, Longman, Roberts & Green, 1864, p. 150.

26 The quoted
phrase Babbage’s son’s, Henry Prevost. See Babbage, Henry Prevost, ed. __Babbage's Calculating Engines: A Collection of Papers by Henry Prevost
Babbage__. London: Spon, 1889. Reprinted in facsimile: The Charles Babbage
Institute Reprint Series for the History of Computing. Vol. 2. Los Angeles:
Tomash, 1982. See Preface, p. I.

27 Difference
Engine No. 2 was completed at the Science Museum in 2002, the culmination of a
17-year project. For an account of the construction see Swade, Doron.
‘The Construction of Charles Babbage's Difference Engine No. 2.’ __IEEE
Annals of the History of Computing__ 27.3 (2005): 70-88. For an account of
Babbage’s efforts to construct his engines and the construction of DE2 up to
1991, see Swade, Doron. __The Cogwheel Brain: Charles Babbage and the Quest to
Build the First Computer__. London: Little, Brown, 2000. (Published in the
United States __The Difference Engine: Charles Babbage and the Quest to Build the
First Computer__. New York: Viking, 2001).

28 For mechanical details of Babbage’s Difference
Engine No. 2 see Swade, Doron. __Charles Babbage's Difference
Engine No.2: Technical Description__: Science Museum Papers in the History of
Technology, 1996.

29 See Collier (1990), p. 119.

30 For technical details and analysis of Babbage’s
engine designs see Bromley, Allan G. ‘Babbage's Analytical Engine
Plans 28 and 28a - the Programmer's Interface.’ __IEEE Annals of the
History of Computing__ 22.4 (2000): 4-19. ‘Charles Babbage's Analytical
Engine, 1838.’ __Annals of the History of Computing__ 4.3 (1982):
196-217. ‘Difference and Analytical Engines.’ __Computing before Computers__. Ed.
William Aspray. Ames: Iowa State University Press, 1990. ‘The Evolution of
Babbage's Calculating Engines.’ __Annals of the History of Computing__ 9.2 (1987): 113-36.

31 von Neumann, John. __First Draft of a Report on
the Edvac__: Moore School of Electrical Engineering, University of
Pennsylvania, 1945. Reprinted in Randell, Brian, ed. __The Origins of Digital
Computers: Selected Papers__. Berlin: Springer-Verlag, 1982, pp. 375-382.

32 See Babbage (1864), pp. 114-6.

33 See Collier (1990), p. 164; Hyman, Anthony. __Charles
Babbage: Pioneer of the Computer__. Oxford: Oxford University Press, 1982, p.
167; Wilkes, Maurice V. __Babbage as a Computer Pioneer__: British Computer
Society and the Royal Statistical Society, 1971, p. 4.

34 Lardner (1834). See *Works*, Vol. 2, p. 159.

35* Ibid*.
p. 183.

36 Babbage (1864), p. 452.

37 Babbage (1864), p. 113.

38 For an account of the construction see Swade (2005).

Illustration credits

- 1 Credit: Science Museum
- 2 Illustration 1 credit: Science Museum.
- 3 Illustration 2 Credit: Doron Swade
- 4 Illustration 3 Credit: Science Museum
- 5 Illustration 4 credit: Science Museum
- 6 Illustration 5 credit: Doron Swade
- 7 Illustration 6 credit: Doron Swade
- 8 Illustration 7 credit: Science Museum
- 9 Illustration 8 credit: Doron Swade
- 10 Illustration 9 credit: Science Museum
- 11 Illustration 10 credit: Science Museum
- 12 Illustration 11 credit: Science Museum
- 13 Illustration 12 credit: Science Museum
- 14 Illustration 13 credit: Doron Swade
- 15 Illustration 14 credit: Doron Swade
- 16 Illustration 15 credit: Doron Swade
- 17 Illustration 16 credit: Doron Swade
- 18 Illustration 17 credit: Doron Swade
- 19 Illustration 18 credit: Science Museum
- 20 Illustration 19 credit: Science Museum