There is a set of books called the Scientific Memoirs, a collection of foreign works translated to english in the early 1800′s, intended to make more academic knowledge available to english scientists. I’ve had the PDF’s of these on my computer since high school, they’re fun to read: It’s really cool to see how some principles and facts we think of as now set in stone were in fact hotly debated in the past.
Volume 3 of the Scientific Memoirs journal, page 666 (quite an easy page number to remember, I think) contains an account of Babbage’s engine by an Italian scientist, Menabera, which covers the basic principles of operation. He discusses the possible uses, especially for computing tables of logarithms, trigonometric functions, and other limit functions. He discusses how the machine works, how it is fed instructions and data, how computations occur, some basic instructions, the fact that the machine is imperative: it does what you say and no more.
It strikes me as a kind of “introduction to The Engine for mathematicians.” It would have been philosophically challenging but not a hard read, and if you’re a modern programmer it will look very familiar to you, even if you have to translate some phrases a bit. CPU Registers become Mills, Memory becomes Columns, etc. This goes on for about 30 pages.
And there are some translator notes, because the translator is Ada Lovelace.
The notes make it clear that she knows the system far more intimately than anyone else could. Menabera, who, while clearly an adept study and skilled engineer, has only attended a couple lectures on the engine, pales in comparison to someone who has worked intimately on it. She points out that yes, in fact, the engine is capable of making decisions. She has such a deep familiarity with the instruction set that she knows there are special modes in it for controlling how addresses in memory are read. I don’t really like narratives that show her as dunking on him somehow, I think she respected what he was able to write with the information he had.
Regardless, she expresses the same kind of knowledge as some people I know who have programmed applications in assembly who know the ins and outs of x86 or 6502 assembly so intimately that they can reduce what a novice would do in a hundred instructions to a dozen. Just, knowing a billion subtleties that demonstrate the gap between knowing and internalizing.
One of her inline notes occupies half the page in the form of a footnote. By the time she gets to the end she has Translator Notes A through G, along with several minor grievances corrected via footnote. She has supplied corrections and clarifications like a dedicated StackOverflow contributor.
And then you reach the actual Translator’s notes. They take up the majority of the remaining 50 pages of the book.
I’ll be honest, I cannot understand like 30% of this. A lot of it is discussions on approximations of trigonometric functions which I remember doing when they had me take Programming 101 at university, but then she gets pretty deep about some of it. I never was much good at the infinitesimal calculus.
The notes go into incredible detail describing the possibilities of the Engine. There’s discussions of the reasoning and implications behind the memory and instructions, even digging into the fact that this is no mere calculating machine, but a general computing machine. She goes to great lengths multiple times to explain how the analytical engine is wildly different from the difference engine.
Like, okay, hang on, I have to just put a screenshot in here.
LOOK AT THIS. THIS WAS WRITTEN IN THE 1800′S.
She’s touching on concepts of language complexity and the limits of computation imposed by the operations and memory available to a machine. This shows some kind of primordial understanding of Turing completeness, the fact that this machine can make decisions on its own once begun requiring no human intervention where others cannot.
Side note: here she is giving Black Mirror a positively sick burn from beyond the grave and centuries in the past:
She seems to be upset, infuriated that somehow no one else can see what this is, that it’s not just a better difference engine, that it’s not just a computing machine, but a whole new way of thinking. That by separating Data from Instruction you change everything about how you solve problems. The fact that you can create loops which reuse instructions to perform an operation over and over again, or if statements to approach real analytical computation, or use the numbers to represent data other than raw algebra, it’s just… so far beyond anything of it’s time.
It’s abundantly clear when you read this stuff with hindsight that she understood something visceral about the very nature of computation that makes you wonder what could have happened if somehow she’d had access to a working difference engine, and what she would have thought of our early forays into transistorized logic.