Friday, October 7, 2016

How we got to where we are

The recent update on the project reported that we have taken a strategic step away from the nuts and bolts of the mechanical drawings and are concentrating on marshalling all known archival sources that bear on the design of the Analytical Engines in its various forms.

Why we took this step had an unforeseen prompt.

Last year, 2015, marked the 200th anniversary of the birth of Augusta Ada, Countess of Lovelace, who, in 1843, wrote in collaboration with Babbage a much-debated account of the Analytical Engine. The bicentennial year focused attention on Lovelace’s life and work: symposia, colloquia, conferences, exhibitions and publications invited perspectives on the significance of Lovelace’s role. This required amongst other efforts a new and detailed look at her famous article.

A celebrated feature of Lovelace’s article was the inclusion of a description of how an Analytical Engine would automatically calculate Bernoulli numbers. The sequence of instructions, the presentational format of the procedures, and the representation of the changing internal states of the Engine have what we now recognise as program-like features. Nowhere does Lovelace or Babbage use the word ‘program’ but for convenience the procedures she described will continue to be referred to in what follows as ‘programs’ on the understanding that to do so is anachronistic.

The Crunch

Rainer Glaschick in Germany was invited to create a simulation of Lovelace’s Bernoulli example for public display in an exhibition at the Heinz Nixdorf MuseumsForum in Paderborn, Germany, and he embarked on the most detailed analysis to date of the algorithmic and instructional content of the example.

Rainer consulted with several others, Bernard Sufrin in Oxford, Tim Robinson in the US, me in the UK and others, to explore and clarify programming structure, underlying and implicit concepts, and hardware capability.

In the course of this Rainer raised searching questions about the computational requirements of the Bernoulli calculation and this prompted further questions about whether the Analytical Engine as designed by the early 1840s would have been capable of calculating the Bernoulli series as Lovelace described.

What emerged from Rainer’s analysis was a clearer understanding of Lovelace’s program. However, the question of whether or not the Analytical Engine of the early 1840s was capable of executing the calculation, and managing the results, pushed to the limits our understanding of the internal control of the Analytical Engine, specifically the question of the basic control arrangements between the punched cards of which there are several types, the processor (‘the Mill’) and memory (the ‘Store’).

Our inability to definitively answer aspects of the control arrangements was partly what prompted us to change our investigative strategy.

Why is Lovelace’s Bernoulli example so difficult?

A taster of what Rainer’s exploration raised for us was the question of memory management.

The Bernoulli numbers form a series in which each new term is generated by a repeated set of operations.

Instructions are coded on Operation Cards – punched cards that specify the instruction to be performed. Associated with each Operation Card are Variable Cards that indicate where the operand is to be found in the Store, and where in the Store a result is to be placed. The relationship between an Operation Card and its Variable Cards is ‘hardwired’ i.e. the association between them is fixed and unalterable.

The Analytical Engine could automatically wind back the set of Operation Cards and rerun them in a loop a prescribed number of times. Since the Variable Cards contain a form of absolute addressing, rerunning the same physical set of Operation Cards will place each new result in the same location in memory i.e. each new result overwrites each last result and, unless printed as they are generated, intermediate results are lost.
For the Bernoulli calculation all prior results in the series are required for the computation of each new result. So results need to be retained in separate locations in the Store for later systematic retrieval.

Lovelace’s Bernoulli program describes looped iteration that does not overwrite the results register i.e. each new result is placed in a separate incremented location in the Store. Without a form of indexed or relative addressing it is not evident how this could have been done by rerunning the same set of cards and we have found no evidence in the design drawings for a relative or indexed addressing capability. The late Allan Bromley, whose work on the designs is the most detailed and penetrating to date, surmised that this is something that Babbage did not resolve.

One way of automatically computing a recurrent series and retaining all intermediate results would be to repeat the sequence of operations by feeding in physically repeated sets of cards but associate with each set a different Variable Card to direct each new result to a new location in the Store. This would allow automatic calculation of the Bernoulli sequence. But it is clear that Lovelace wished for a general solution as a demonstration of the complete generality of the Analytical Engine’s capabilities – enter n as the number of Bernoulli numbers needed and press ‘Go’ for the automatic generation of all n Bernoulli numbers in the series using the same looped set of Operation Cards.

Between 1837 and 1840 Babbage wrote some two dozen programs at least two of which involve recurrence relationships of this kind i.e. the calculation of series requiring the repetition of the same sequence of operations to generate each next term. In the two main examples each new result is generated only from the immediately prior result, and each new result overwrites its immediate predecessor. So if the nth term of a series is required the instruction set would be repeated n times and prior results, other than the (n-1)th are not material. If the prior intermediate results are needed they can be printed as they are generated, but they do not need to be retained internally in the Store to continue the series. Such recurrence relations can be computed by rerunning the same physical set of Operations and Variable Cards and overwriting each last result with each new one.

So while Babbage had described how the Engine would deal with some recurrence relationships he provided no example of a recurrence relationship that required the internal retention and reuse of all prior results. Without a systematic form of incremental addressing it is unclear that Lovelace’s Bernoulli program could run on an Analytical Engine of the early 1840s. This is part of the reason why Lovelace’s Bernoulli example is a more challenging example than any of Babbage’s earlier examples of programs.

Being unable to definitively resolve the arrangements for memory management in a decisive response to Rainer’s questions prompted us to realign our immediate objectives and to redirect our attentions to systematically master what was knowable about the Analytical Engine design – this by establishing a comprehensive database for all known technical sources, ensure that the database searchable and, perhaps most importantly given Babbage’s sometimes fragmented way of working, to internally cross-reference the material. This is a substantial task given the size of the archive but the outcome will allow a systematic analysis and reveal to what extent existing sources constitute a coherent description of a buildable machine.

Rainer Glaschick has made public his analysis of Lovelace’s Bernoulli example. His full account, Ada Lovelace's Calculation of Bernoulli's Numbers, can be found here.

Doron Swade
October 6, 2016

Monday, October 3, 2016

Autumn 2016 report to the Computer Conservation Society

This was presented on September 22 to the Computer Conservation Society by Doron Swade.

The last report described that reverse engineering a coherent and consistent understanding of the Analytical Engine design by examining the main and best-known mechanical drawings has been less than completely successful to date. I also described that to deal with this we have taken a step back to marshal and review all known sources to assess the descriptive completeness of the surviving technical information i.e. whether Babbage’s archived technical drawings and manuscripts constitute in their entirety a coherent description of the Engine.

Tim Robinson in the US has been trawling through the entire technical archive and compiling a searchable cross-referenced data base for all surviving technical material. In parallel with this I am conducting a fast-track survey of some twenty manuscript volumes of Babbage’s notebooks focussing on material on his notational language (the Mechanical Notation) that he used to describe his machines – this with a view to reading the notational description of the AE designs using the decoded Notation as an interpretative tool to achieve a deeper understanding of the designs. The data-base and trawling exercise is what has primarily occupied us over the last four months.

A major step forward in the overall project has been the online public release by the Science Museum of the major part of the digitised archive. This has been widely anticipated and widely welcomed. The Museum’s intention is that the images are for the time being illustrative only in that the image resolution is sufficient to identify the drawing and its major features, and higher resolution versions are available on request. The current lower resolution images are sometimes adequate for smaller manuscripts but for the larger sheets the detail of the smaller annotations is insufficiently clear. The work of our small team is not hampered by this as we have access to higher resolution off-line images under licence. The relevance of the public release and the usability of the images affect the volunteer effort of folk wishing to help the project, for which they need access to detailed images. The good news is that the Science Museum intends a higher resolution release of the whole archive for early in 2017, and this will include material already digitised but not yet released online. Feedback in response to the first release has confirmed the wider interest in the project and the presence of fair number volunteers eager to help. We expect to benefit from this effort more fully in the new year when the images will support close reading.

In short, we are retrenching by focussing on identifying, reviewing and indexing all known the technical sources to serve both as a datum and as a research tool in the pursuit of a deeper understanding of the designs.


Doron Swade

Thursday, May 12, 2016

Spring 2016 report to the Computer Conservation Society

This was presented on May 11 to the Computer Conservation Society by Doron Swade.


We have been pecking away at Babbage’s original design drawings for some while now and have found with regret that we are unable to reverse engineer a coherent and consistent understanding of the Analytical Engine from the mechanical drawings alone. There are some 300 drawings and some 2200 Notations – descriptions of the mechanisms using Babbage’s language of signs and symbols. There were three phases of design - early, middle, and late.There is overlap between these, there are ad hoc upgrades, and only fragmentary explanation, where there is explanation at all.

It remains unclear whether any of these three phases is graced by a complete design. This in itself would be unfortunate but not catastrophic as mechanisms can be devised as functional replicas for omissions provided the intended function is fully understood. The immediate problem is that the extent of incompleteness is not clear. The work of the late Allan Bromley in decoding the AE designs in invaluable but he published only a small part of his substantial findings and these are anyway based on only part of the archive. While much is understood about many of the main mechanisms and the general scheme, there remain fundamental aspects control and sequencing that are not yet well understood and have resisted further illumination.

To achieve a more comprehensive understanding of the designs Tim Robinson in the US is going through the entire Babbage archive (over 7000 manuscript sheets) and producing a cross-referenced searchable data base. The purpose of this is to marshal all known sources so that we have a bounded idea of all relevant material. The intention is to reveal any explanations and/or drawings that Babbage might have left that have not yet come to light.

A second line of attack is to the 2200 Notations for the AE using the newly acquired knowledge of the Mechanical Notation. Allan Bromley maintained that the Notations were indispensible to his understanding. However he did not publish how he had used the Notations and he was the last to use them as an interpretative tool. The hope here is that the Notations will provide some of the missing information about logical control and moreover give insights into design strategy. In parallel with Tim’s comprehensive data base index I am going through the twenty volumes of Babbage’s ‘Scribbling Books’ identifying all material on the Mechanical Notation – a fast-track way of accessing this specific material.

Currently the stages envisaged for the project are:

1. Finalising research of the original design
2. Specifying a viable version
3. Computer modelling and simulation/3D printing
4. Manufacture and construction

We need more hands to the pumps and have latterly diverted some effort to fundraising. We have a 3-year plan at the end of which we expect have the requisite understanding of the designs, a platform from which to specify a viable version of an AE that is historically authentic, and to have trialled tools for modelling and simulation. The funding proposal includes pulling in requisite expertise including modellers and mechanical engineers.

In summary, we have had to bite the bullet with the realisation that without a concerted assault on the sources, a fuller understanding of the Engine design will not be forthcoming. We need to understand the intentions of the design well enough to identify missing mechanisms and understand their intended purpose well enough to devise fill-ins that are consistent with Babbage’s design style. Effort is now divided between continued study of the designs and fundraising to ramp up the effort.

Doron Swade

Tuesday, May 3, 2016

Winter 2015: Project Report to the Computer Conservation Society

The following report appeared in the Winter 2015 Resurrection:

The bicentennial year of Ada Lovelace’s birth falls this year. Preparation for various celebratory events has directed attention to Ada Lovelace’s ‘program’ (1843) to calculate Bernoulli numbers using Charles Babbage’s unbuilt Analytical Engine. A small group including Tim Robinson in the US, Rainer Glaschick in Germany, Bernard Sufrin in the UK (and me) have been collaborating in exploring the ‘program’. Significant progress has been made with many obscurities now illuminated. The study has directed new attention to how the several types of punched card control the internal microprograms on the one hand, and how these functions interface with the user on the other.

There has been significant archive activity. The major historical source is the Babbage technical archive held by the Science Museum. The Science Museum digitised the archive in 2012 is now preparing to provide open access to the archive. The Analytical Engine project team has been the main user of the digitised archive under special licence. In the course of the project mismatches have been identified between the digitised material and the existing printed index compiled by the late Allan Bromley and published by the Science Museum in 1991. Referencing anomalies, identification of material omitted from digitisation exercise and other structural issues have become evident. Descriptions of these have been compiled and we are working with Science Museum archivists to resolve and correct these ahead of open access release. The work is detailed and, given the volume of material, substantial. Eye-strain is an ongoing hazard.

This archive work has suggested a new and significant prospect for the role of the Notation in an understanding the designs. One of the difficulties in understanding the designs is the need to reverse engineer logical function from mechanical drawings of mechanisms - this without textual explanation of purpose or intention. The original hope was that the notations, expressed in Babbage’s symbolic descriptive language, would contain a higher-level logical description that would relieve this difficulty. As described in earlier reports the main features of the Notation were decoded from a detailed knowledge of the mechanisms of Difference Engine No.2. The provisional conclusion from that study was that the notations are a description of the mutual physical relationships of mechanical parts and are not an abstraction of a logical description of the Engine’s function. Further, that the mechanical design preceded the notational description. New material found in the archive suggests that while this might be true for Difference Engine No.2 the notations for the Analytical Engine (about 2,700 of these) may indeed embody higher-level logic, control functions for sequencing the punched cards and orchestrating the internal operations that the punched cards control. If so, the notations would provide the explanatory tool we have been looking for and the prospect of this is enough to distract one from the plight of refugees migrants and austerity, even if only briefly.


Doron Swade

Further progress as reported to the Computer Conservation Society

Progress continues decoding Babbage’s Mechanical Notation – the language of signs and symbols Babbage devised to describe the mechanisms of his calculating Engines. There has been a new archival find in manuscript papers Babbage gave to a younger colleague, Harry Wilmot Buxton. The Buxton papers are held by the Museum of the History of Science, Oxford. The papers were known about and some material has been published but last time the papers were viewed predates the focussed interest on the Analytical Engine, and the significance of the material on the Mechanical Notation passed unnoticed. With the kind permission of the archivist, permission was given for a copying rostrum to be used and the relevant material was digitally photographed in situ. The significance of the material is two- fold: it contains Babbage’s efforts to provide generalised rules for annotating his mechanical drawings; secondly, the principles it documents confirms our findings from the earlier exercise in which knowledge of the Difference Engine mechanisms were used to decode the Notations that describe them – this without the benefit of generalised rules of syntax orgrammar. The agreement between the archive and our earlier findings is a satisfying vindication of the decoding method using known mechanisms.

The Ada Lovelace bicentennial, celebrated this year, has directed attention to the Analytical Engine through the description of the Engine Lovelace published in 1843. Her description of the Engine is in the form of Notes which form a substantial addendum to the account by Luigi Menabrea who wrote up some of Babbage’s lectures on the Analytical Engine Babbage gave in Turin in 1840. The ongoing preparation of celebratory exhibitions, symposia andmedia coverage, has redirected attention to specific features of Lovelace’s description. One such is the use control arrangements between the punched card input and the routing of information between the cards, processor and memory. It appears that there is no form of indexed or relative addressing either of which would be required for the AE to execute the example given by Lovelace - the calculation of Bernoulli numbers. It is far from clear how the Engine executes its control functions and there are several ongoing collaborative conversations between scholars and historians analysing the issue stimulated by the extended interest in Lovelace’s work. The lesson we have taken is that much as is known about the principles of the AE, there is much that is not understood at the fundamental level of internal control and such understanding is a prerequisite of any construction, physical or virtual.

Doron Swade

Autumn 2015: Progress Report for the Computer Conservation Society

The following appear in the Autumn 2015 Resurrection

There has been a new archival find in manuscript papers Babbage gave to a younger colleague, Harry Wilmot Buxton. The Buxton papers are held by the Museum of the History of Science, Oxford. The papers were known about and some material has been published but last time the papers were viewed predates the focussed interest on the Analytical Engine, and the significance of the material on the Mechanical Notation passed unnoticed. With the kind permission of the archivist, permission was given for a copying rostrum to be used and the relevant material was digitally photographed in situ. The significance of the material is twofold: it contains Babbage’s efforts to provide generalised rules for annotating his mechanical drawings; secondly, the principles it documents confirm our findings from the earlier exercise in which knowledge of the Difference Engine mechanisms were used to decode the Notations that describe them — this without the benefit of an generalised rules of syntax or grammar. The agreement between the archive and our earlier findings is a satisfying vindication of the decoding method using known mechanisms.

The Ada Lovelace bicentennial, celebrated this year, has directed attention to the Analytical Engine through the description of the Engine which Lovelace published in 1843. Her description of the Engine is in the form of Notes which form a substantial addendum to the account by Luigi Menabrea who wrote up some of Babbage’s lectures on the Analytical Engine Babbage gave in Turin in 1840. The ongoing preparation of celebratory exhibitions, symposia and media coverage, has redirected attention to specific features of Lovelace’s description. One such is the use control arrangements between the punched card input and the routing of information between the cards, processor and memory. There is evidently no form of indexed or relative addressing either of which would be required for the AE to execute the example given by Lovelace - the automatic calculation of Bernoulli numbers. It is far from clear how the Engine executes its control functions and there are several ongoing collaborative conversations between scholars and historians analysing the issue stimulated by the extended interest in Lovelace’s work. The lesson we have taken is that much as is known about the principles of the AE, there is much that is not understood at the fundamental level of internal control and such understanding is a prerequisite of any construction, physical or virtual.


Doron Swade

Thursday, March 19, 2015

Progress on understanding Babbage's Mechanical Notation

A previous blog post explained Babbage's mechanical notation which is key to understanding and building the Analytical Engine. This blog post gives a quick update on work done.

"Project Report to Computer Conservation Society Committee for Meeting Thursday 19 March 2015

Analytical Engine

Major progress has been made decoding Trains diagrams – these are the ‘flow charts’ in Charles Babbage’s notational language. There are some 90 separate symbols in the alphabet denoting (a) the form of the part (lever, gear, pendulum, bar, rack, pinion . . .) and (b) type of motion (circular, linear, reciprocating . . . ). The method we are using involves examining the symbols in the Train that describe a particular mechanism in the Engine (addition, carriage, warning, locking  . . ) and from an existing knowledge of the function of the mechanism, infer the usage of the symbols used to describe each part. Progress made to date encourages us to believe that the whole language will yield to this method. The version of the notation being used for this process was formulated in 1851 which post-dates both the major work on the Analytical Engine and the complete design for Difference Engine No. 2 and is therefore likely to be representative of the notation conventions as used for both these engines.  Once this decoding exercise is complete attention will turn to the historical evolution of the Notation from 1822 through to 1871 i.e. an exploration of how the notational language was expanded and developed to describe mechanisms of increasing complexity.

The study of the notation is part of the Notions and Notations project funded by the Leverhulme Trust. There has been rapid progress in the two other major elements of this project: software implementation of the Notation, and an exploration of alternative designs. We have defined an ASCII-text language called FORTRAC15 which captures and expresses Babbage’s hand-written notations. The name FORTRAC derives from the three descriptive elements of Babbage's Notation: Forms are un-dimensioned ​ engineering diagrams and show the shape of parts and their relationship to one another; Trains show the chain of cause and effect within a mechanism; and Cycles show timing and phasing relationships of moving parts. Any resemblance between the name FORTRAC and that of other early formal languages is entirely intentional.

Significant software tooling for FORTRAC is underway. We envisage inter-linking between graphical icons that are the notational symbols, 3D animations of parts, and FORTRAC15 textual descriptions. As a first stage we are building a tool that allows JPEG images of the notations to be annotated with FORTAC15 textual terms. We are now using this tool to capture all the Difference Engine No. 2 notations in machine readable form. This process has exposed omissions, anomalies and ambiguities in the original notational description of the Engine and clarified the scope of what is describable in the notational language. Some unexpected features have also been thrown up including examples of highly nuanced use. We are also designing and constructing 'alternate’ Difference Engines making use of modern rapid prototyping technologies. A prototype digit-serial engine that would have around 15% of the throughput of DE2 has been partially demonstrated using sintered-nylon 3D printing and some stock gearing. All parts could have been machined or cast using 1830's technologies. As of March 2015, one quarter of a complete machine has been constructed.

The significance of this to the Analytical Engine project is partly to address the question of ‘how else might Babbage have done this using technology available to him at the time?’ The architecture of the Analytical Engine (1834-1871) conforms identifiably to Von Neumann’s in all major logical respects. This raises the question of whether this architecture contains something fundamental about logical implementation of general purpose digital computing.

The ‘alternative Difference Engine’ is a modern exploration of necessary uniqueness in physical implementation and will inform the analysis of the Analytical Engine designs.

Doron Swade

11 March 2015"