I'm a professor at Rawl Holloway.
I'm going to shift the level of discourse
away from how the individual programs work.
Can you hear me now?
>> Yes.
>> How the individual programs work and indeed how the individual machines work.
Because my interest is in, really, how the machines came to be.
How were those individual designs captured and
marshalled together into these very complex objects.
So my main goal is to
help you get some insight into the diagram that is behind the figure wheel there.
Which captures a description of the causal chain within the printer, which
was designed both the analytical engine and for difference engine number two.
And that physical printer you can go and view in the science museum.
Now because I stand between you and
lunch, and we're clearly over-running, I'm gonna show my last slide first.
>> [LAUGH] >> Because it contains an invitation.
>> Elizabeth Scott and
I have a table set up outside which has got this device on it.
And you're very welcome to come and play with it,
because it will add together your two favorite numbers,
as long as they are single digit numbers, >> [LAUGH]
>> And it is a direct representation
of the atom mechanism from difference engine number two.
Which is related to the kinds of adding mechanisms that would have been used in
the analytical engine, and we can explain to you how it works and
you can have a play with it.
So why don't you come and talk to us, we'll be there in the breaks both today
and tomorrow, there's plenty of opportunity.
If I'm allowed I'll even bring it along and
have it on the table at dinner this evening.
Okay, so now, let me get on to what I really wanna talk about.
Now I'll leave this up for you to read while I'm speaking.
I study formal languages.
That means languages which are more or less mathematically specified,
both the syntax and the semantics.
In practice, that means programming languages.
It means mathematical symbolism, it means some aspects of network protocols, and
it means in particular, a curious byway in the field of formal languages,
which are hardware description languages.
Now hardware description languages are little known,
but are incredibly important.
Because our modern technology really rests on the achievement
of hardware description languages.
A modern high end integrated circuit has on it one transistor for
every person on this planet.
Now anybody who hears that for the first time and
is not shocked is not paying attention.
How on earth could you possibly marshal the geometry and the inter connections
in a structure which is as complex as the population of the planet?
How do you do that?
And hardware description languages are how you do it.
You use techniques from software engineering, where we use hierarchy and
abstraction to enable the designer to focus on a particular part of the machine,
a particular level of the machine at any one time.
And, you also use new ideas.
Idea's which I call faceting.
What we do is bring together multiple descriptions of the same piece of
hardware, its interconnectivity, its geometry.
The intent of its behavior.
And we have these things in parallel.
And hardware description language works so
as to enable you to check the internal consistency of those descriptions.
Now the use of hardware description languages is quite recent.
When I started as a young academic in the mid-1980s.
It was still something that you had to persuade
hardcore electronic engineers to do.
Because they could still just about cope with the complexity of
the systems they were designing by drawing pictures.
But that battle was won.
And these days, I think almost nobody designs high end hardware without
using hardware description language.
As an aside, one of the two dominant hardware description languages
called VHDL, is derived from the language called ADA,
which you'll hear about this afteroon, it's just a little historical accident.
So, the thing that is interesting is that Charles Babbage,
as well as well as being the pioneer of computing, as well as being an embryonic
figure in economics, as well as all the other strange rocks that you lift and
there is Babbage smiling at you, this anachronistic figure.
>> [LAUGH] >> He invented hardware
description languages.
And I don't think this is widely known fact, which is great for
me because it enabled me to extract a very large amount of information from
the trust to run a research project on this topic.
It is clear that Babbage was fixated on notation throughout his life.
We don't have time to do biographies of Babbage here but Dubby has it here.
The Leibnizian notation that we use for
differential calculus essentially is in our current usage, because
Babbage went to war with the authorities at Cambridge as an undergraduate.
And that battle was won very quickly.
So notation was always central to Babbage's ideas.
Now, writing 80 or 90 years after this picture of Babbage was taken,
Bertrand Russell said something quite interesting.
It's a common place that ordinary language is too ambiguous to
enable us to specify electronic and mathematical systems.
Russell makes the very excellent point that only mathematicians, mathematics, and
mathematical logic can say as little as a physicist needs to say.
This idea that what we are going to do is strict, meaning out of symbols, so
as to deliver precision and
insight, Is absolutely at the heart of what we do in mathematics and
in computing, and all other forms of it or other forms of engineering.
Now for the folk in the audience who are not engineering and
mathematically oriented, I want to make absolutely
clear that this got nothing to do with linguistic relativism.
Concepts which was satirized so ablely by Orwell in 1984.
It's always seemed to me, that anybody that reads that paragraph,
this is a quote from Simon in 1984, explaining what is.
Anybody that reads that, and doesn't think it's nonsense, isn't paying attention.
Because the with which humans create words and terminology is outstanding.
I'm sure you can create a language where people won't say out loud anything
that the thought police won't come after you for.
But the idea that you could actually erase modes of thought,
by restricting It was vocabulary, I think is bizarre.
And functionally, I think, is not a common, not a commonly
supported mode in natural linguistics at the moment.
Orwell, himself, wrote a couple years previously, in almost opposite terms.
I have to be very careful about saying things like this,
because linguists are famous for their viciousness of their debates.
>> [LAUGHTER] >> And I don't want,
I do not wish to have any bricks thrown at my head.
And as Pinker says here you wouldn't believe the kind of hate mail he
gets just from his work on irregular verbs.
So I'm keeping right off human linguistics.
The only reason for putting this slide up, is to tell you that I am not
talking about linguistic relativism, I'm talking about something different.
Now the project that I mentioned earlier comprises these four folk here, and
I want to give full acknowledgement to them.
Doran Swade on the end there.
I met Doran 25 years ago, when I turned up at the science museum to
hear about efforts in the conservation of early computers.
and he and I worked together on a variety of projects, and into earlier
he showed me the difference engine which is under construction at that time and
began to talk to me about Babbage's work.
And for me the central questions was, What!?
How can this possibly be?
Anybody who encountered Babbage's work For
the first time without perspective in the 21st century.
And isn't shocked, isn't paying attention.
And they should be shocked for two reasons.
Firstly because the machinery exists and
secondly because it does not connect through our technology.
Doren has this glorious phrase which he calls Babbage
the great uncle of computing.
As this notion of something really important going on over there,
but there is no dissident connection to the current generation of children.
It is astonishing as much that Babbage's machines existed,
it is astonishing the stuff disappeared again.
And the study we're doing does throw a little bit of insight as to why that is
so, so the people in the team, there's Doren at the end,
there's some weird guy there in a sweatshirt.
Professor Elizabeth Scott who you can meet outside, and Doctor Pierce Plumber who is
a very fine mechanical electronic engine here,who has designed and built some of
the alternate Babbagery systems that we're playing with us part of our project.
Now I want to show you some timelines,
and just skit it through some of the machines so you can get a feel for them.
The reason that I like to put this slide up, is because it is a common
place that Babbage is this anachronistic Victorian engineer.
He's no such thing.
He's an anachronistic Georgian engineer.
This is not Victorian engineering.
>> [LAUGH] >> This is Georgian engineering.
By the time Victoria concedes to mount the throne,
the whole difference engine one project has been and gone.
Work on the analytical engine has begun.
The concepts and
the ideas that we've been talking about today are already well in place.
The other thing I want to draw to you attention is that Babbage had a son.
To whom, well he had several sons, we'll come to that in a moment.
He bequeathed his equipment and much of his knowledge and Henry Prevost Babbage
continued his work after Babbage's death, really right up to the first world war.
So this is really a very, very long development program indeed
that we're talking about, 50 years of Babbage, and then more years of the son.
It's not clear that the son really moves thing forward any more,
he did a few things that are important.
He constructed some small test pieces, much like the one that I can
show you outside and let you play with, conceptually at least.
And they were distributed to major institutions of learning.
There's one in the Oxford history of the History of science.
One went to Harvard.
And one is sitting in fact at the moment in the Science Museum in London,
where difference engine number one normally lives because DE1 is
being moved upstairs for the Ada exhibition.
So if you're in London you can go and have a look at one.
[COUGH] The other thing I want to draw your attention to
Is the relative timing of the pieces of work.
Now Difference Engine Number One is a project that failed.
It failed not because the engineering was impossible, but perhaps
because the engineering organization was beyond what was possible for the time.
Or possibly because Babbage was being ripped off.
Discuss.
Not my job.
>> [LAUGH] >> It failed, but immediately thereafter,
Babbage's vision expanded towards generalizations
of the polynomial computation that the Difference Engine does.
It's clear that Babbage was haunted by the failure of that early project.
And towards the middle of the analytical engine development,
Babbage re-implemented the same architecture.
Probably the first example in history of a range of machines where an architecture
has two physical manifestations.
So Fred Brooks, move over.
He reimplemented the Difference Engine architecture using the new ideas and
technology that he developed whilst thinking about the analytical engine.
And the heck line result is that the number of pulse goes down by the factor 3.
So, the complete Difference Engine number One ran about 24 thousand pulse.
Difference Engine number two, about 8,000 parts.
The analytical engine, well put a wet finger in the air,
how many registers do you want?
Do you see these numbers are quite large?
They're not as large as the population of the planet, but I don't know
how good you are at holding the details of 24,000 things in your head at once.
It's an extraordinary intellectual achievement at how it is done.
Let's skip through some material very quickly.
I wanna just, because I'm gonna talk about collaboration in a moment.
I wanna talk briefly about Babbage's character.
You see here the list of Babbage's children with their births and deaths.
It's not a happy story.
By 1827, five of Babbage's children and his wife were dead.
That's gonna do something to a man.
And I think having an enormous project to throw yourself into for decades,
might possibly be a side effect of that kind of hand that fate has dealt you.
We can talk very briefly about all the Difference Engine does.
It kind of does that.
There's an Excel sheet, and
I've done a quadratic, actually a cubic fit to some data.
It's the data from one of our research algorithms.
You probably know that you can take
equations which are made off of powers of X.
And if you do it carefully enough,
you can fit them to most other equations that you might be interested in.
It's trigonometric functions and so on.
And the way that these machines were used, was to get a competent mathematician to
do a piece wise fit of polynomials to the function you actually wanted to compute.
And then difference engine, using method of Newton's, enables you to tabulate
the values of that polynomial, simply by performing repeated additions or
subtractions, depending on how you care to think about it.
And that's what the difference engines do.
They are both very limited, and yet very, very useful.
Because not so much of the utility polynomials but
the fact that you can fit polynomials so easily to the functions that you want.
[COUGH] Here's different engine 911 Derek Doren has already shown this.
The reason I'm showing you these slides, is so
that you can look at the progression in the physical manifestation of the parts.
This Georgian engineering definitely Georgian engineering.
All finished before Victoria came along.
Rather beautiful rather Baroque and curvaceous in places.
This is difference engine number two.
Which is much more in your face.
It's a lot bigger for a start.
Remember, this has got a third as many parts as the earlier engine.
The earlier engine is only a fragment,
about a seventh of it, so you've got to do a bit of arithmetic in your head.
But this is a much chunkier piece of kit.
Just for your information, the section on the end here is the printer, and
we're gonna talk about that again in a moment.
I've thrown a picture of the Rosetta Stone in there as well,
courtesy of Wikimedia Commons.
The reason I've done that is because, for our project, this is our Rosetta Stone.
Every time people talk about that, they should say, oh,
of course he never finished anything.
[LAUGH] Go to hell is my response.
This man did incredible things.
One thing he did finish was a design for de2.
And he offered it to the government, and the government said, oh no thank you.
Cuz they got burned pretty badly on de1.
But the presence of the full design enabled Doran and
his team in about 1990 to construct this physical machine.
This is not a reconstruction, this is a first construction.
But they did it purely by reference to the engineering diagrams.
They didn't use the notational elements that I'm going to describe to you
in a moment.
As a result we have this physical artifact and we have these notations independently.
And we can use the physical artifact to decode the notations.
So this is kind of Linear B for early computing.
Finally, we have the analytical engine, or one version of it.
And this is much more likely constructed.
It's a much smaller system.
Apart from all the other things he did,
Babbage became interested in manufacturing technology and took a tour of the country.
And wrote a book on it, which was cited by Karl Marx in Das Capital,
because it was one of the first studies of what was possible in manufactories.
So what you see here, in fact, is a third generation of engineering hardware.
It would be very interesting to see what the difference engine would look like if
it was constructed using this style of hardware.
Before I show you the notational stuff proper, I want to talk to you about
a nature collaboration, because it's about the only thing I have to say about either.
Now, the first thing you must understand, is that all engineering design is really
a conversation between the designers, the artifacts and the users.
Designers are always surprised by what their things actually do.
Sometimes they do weird stuff because you made a mistake.
Sometimes they do weird stuff because they've got capabilities that you
haven't imagined.
Never less true than of computing.
Nearly all systems are unfinished.
They're simply abandoned, because people moved on.
And really, the only distinction between designers, implementors, and
users, is about the level of abstraction that they're working in.
Now, this is something I feel very keenly, because I work in various collaborative
relationships, none of which are comfortable.
They're all necessary to drive forward the ideas.
But it's not a fun sport.
Anybody who's got a very comfortable, cheerful,
collaborative relationship probably needs somebody with a bit more grit in there.
And I think one of the tragedies of Babbage, is that he didn't have any users.
Apart from that brief supernova explosion, as Doran talks of it,
maybe nine months, in one year, in the middle of a 50 year research program.
Basically, you can see Babbage working alone,
with a team of technicians to implement his ideas.
[COUGH] Essentially in isolation.
Not lecturing about what he's doing, and
really somewhat resistant even to getting the stuff published and out the door.
He's independently wealthy.
Why does he care?
He's not sitting in a modern university with a ref coming up
to bite his back side in five minutes time.
So now, I'm gonna get into the actual technical core of what I'm gonna do, but
very briefly, because there's very little time.
But you can come and talk to me afterwards.
Here's a close up of the printer mechanism.
The printer, in many ways, is the most complex part of the machine.
It does different with columns, for instance.
And one feature that I can draw to your attention, is that as you're printing
a set of tables, the man on the other end is turning the handle.
Sort of, probably a man.
The person on the other hand is turning the handle.
You can see this in the video.
They don't know when you've got to the very bottom of a table.
So there's actually a mechanism whereby a trip is thrown by the printer and
there is a cat gut chord, which runs across the machine and
disengages a drive dog in the handle, at which point you're running free and
the machine itself is stopped.
So this is glorious.
Synchronization mechanism in there.
I understand that the West Coast version has a bit of trouble here,
because cat gut is hygroscopic I was told this morning.
So it stretches.
>> [LAUGH] >> Thank you for the anecdote.
Now then, if you go and look at the engineering diagrams for the printer,
you see a traditional side on view of the gears.
As you've got at the back, but it's also heavily populated with strange symbols.
And here are some in close up, you can see that there are letters in different fonts,
and they have a variety of subscripts and superscripts.
This is the core of Babbage's notation, and
it is how he managed to make sense of the complexity of his system.
This is what it looks like in total.
This is a trains diagram,
one of three facets of Babbage's hardware description language.
And it captures the causal chains throughout the printer.
You can't see it terribly well, so I'm gonna zoom it up a little bit on
one of the central features, and you'll begin to see what's going on.
There are these rather strange looking formulae.
We see here these labels, with actually up to six, suffixes.
We see these braces, and
we see arrows, and we see parentheses, and they all mean something.
Now here's the kicker, Babbage was, by his own words, most proud of the notation.
He saw it as his greatest achievement, and of course, he was correct.
Because this is not a machine.
This is not a program running on a machine.
This is a way of thinking which enables you to design machines.
This is not the thing.
This is the meta-thing, and the meta-thing is always more interesting than the thing.
And Babbage was absolutely correct, I think, in saying that
his hardware description language was the pinnacle of his intellectual achievement,
not least of all, because it enabled everything else.
And it went nowhere.
As far as anyone can see, apart from a few of his technicians and
his son, nobody really used this notation in anger.
Now why would that be?
Well, I think the answer is very simple.
Babbage was so far out of his time, in terms of the state
space of the machinery that he was building, but no one else needed it.
If you look at the steam engine, which I build in my copious free time.
Or even an internal combustion engine, there is stake, there are cycles,
there is a rotation, but there's nothing that you can't figure out by
just looking at side elevation and imagine the bits moving around.
It's only when you introduce memory into a system,
it's only when you introduce state that things get too hard.
And essentially you don't find machines with true state appearing until its
use perhaps in the 30s, and certainly the post World War II flowering in computers.
And I think it's exactly how big is the state space of your machine, and
if it isn't too big to fit in your head, you might have a go at this.
Anybody else is gonna run screaming from this, and they did.
Babbage tried to push this as a notation that should be taught in the mechanical
schools, and in fact, at the time of the great exhibition,
he made a desultory attempt to contact people who might be interested in it.
And try and generalize his notation in a certain way
to give it wider applicability.
It's one of the few instances that one can see of Babbage reaching out
to other folks and saying, come and join with me.
>> Seems lucky for you.
>> [LAUGH] >> Doesn't it?
Remember what happened to APL?
[LAUGH] A very,
very fine notation which is not broadly used outside of certain shops.
Here's some detail on how it works.
Names comprise a letter.
And the font and whether it's in italics or not are significant.
Above it there's a little icon which is called the index of form.
That particular one is Iraq, I'll show you some other ones in a moment.
Down the bottom there's an icon indicating the kind of movement that
the element named by this name performed.
So that motion there is actually the motion of something that is
turning if your looking down the x axis.
So actually that's the motion of the handle
on the end of difference engine number two.
The index of identity is set to be the same for
all elements that are originally connected.
The index of alphabet is used when you've run out of letters.
[LAUGH] >> [LAUGH]
>> And doesn't fit.
So six was enough for a long time, and then it wasn't enough.
The linear index is used to generate arrays.
You will have seen in the example that Dorin showed this morning a sigma and
something that looks suspiciously like an indexed expression from a software
programming language.
That's exactly what it is and
it refers to the columns in the difference engine number two.
And the angular index does the same thing, but it's used for rotation.
Any of you that have seen the difference engine in action,
will know that it has a spiral of levers behind it.
So each element both goes up and
rotates by a certain angle and that's the angular index.
[COUGH] Not used very often, because those structures don't appear very much.
Here are some, I love these, here are some of the icons that Babbage constructed,
my favorite one is the escapement.
He gave an example, the clock written in the notation,
you know how the escapement works, and there's a little pendulum.
And what I said earlier that run about time the great exhibition,
the attention to reach out to other people.
What they actually did was say to people,
what other icons do I need, what other kinds of mechanisms are there?
And there are that 70 or 80 of these little pictures.
This ones a rack.
When you get the idea, they're all meant to be kind of pnemonic value and
emotions too have some pnemonic value.
Coming from modern perspective,
when you look at it, you'll find there are obvious gaps all over the place.
Some motions down some axis have an icon and some don't.
So to a modern mathematician, a modern, someone who is interested in modern formal
languages, one of the very interesting things is that Babbage just seems to
use what he needed, and not bothered to define the rest of it.
But I guess from a mathematicians perspective makes sense, but
from an engineer's perspective it's confusing.
There's some information on the naming conventions, and whether we're upright,
or slanted letters.
You can read about all this stuff and how long have I got?
Have I run out of time completely?
Oh you're waving your hands, you have a sign saying stop in front of you,
but I cannot tell whether it's active or not.
[LAUGH] You'll wave it at me, but I can keep going for a bit, okay.
[LAUGH] So here are some of the conventions.
Some of the conventions are desperately unhelpful.
On a particular drawing the lettering of parts is such that,
where does it say here, letter names are used to indicate depth into the diagram.
So a distant part has a letter closest to the beginning of the alphabet,
which is really great right up until the point when you've got the same part on
two different diagrams, from two different angles.
So these names are with respect to a particular diagram to some extent.
There is cross referencing to some extent.
I don't want to underestimate that, but
again from a modern perspective we would think of
the part having a name which popped up with the same name in various places.
And here life is not so simple necessarily.
One of the things that Babbage does which though is absolutely core and
really important, is that he distinguishes between working parts and working points.
Now he calls them working points, but in general they might be a surface.
So a cam is a part and a cam follower is a part.
The place where they contact each other,
which in general is the surface, that's a working point.
And for the computer scientist in the audience, essentially what Babbage is
doing is constructing a directed graph of the hardware interactions.
So we can think of the trains diagram as a description of a connected directed graph
whose nodes form two classes, paces those of the physical objects and action point.
And edges are also in two classes.
There are ownership edges, which say, this piece belongs to this assembly.
And there are cause arrows,
which involve an action point to action point arrangement.
So the graph is not as you might imagine,
that the nodes in the graph or the parts and the edges in the interaction.
[INAUDIBLE] And their label.
Not at all.
There are nodes for the interactions which have lines between them.
This is hard, actually.
It's really quite hard to think about.
Here are some examples that are derived from
a paper written by Henry Prevost Babbage.
So I'm doing a bit of an aider here.
I haven't invented my own stuff.
I've nicked it from another paper.
These are the examples here.
So, we've got a bevelled gear here which is rotating, one at the top there, and
driving the bottom bevel gear.
Now, if 3p, 3b, and 3d are all rigidly connected to each other,
that's what the 3 means, the letters tell you that those are individual pieces.
And this strange formula up here, which can be compressed to here,
tells you that there is motion, or force, being injected via 3B.
Which is turning 3B and as outputs have 3D and 3B up there.
Here's a related example.
It's essentially the same structure.
There's a sleeve rotating on an axle.
In this case the axle is called 3P and everything is called 2D 2B,
because they're now independently non-fixed elements.
And again if I drive it, then 2B Is driving and
the parentheses mean it's rotating around that axle.
You begin to see why the machinations of the day might
not have enjoyed this very much.
It's actually quite hard to use.
This is why I borrowed examples from Henry Provost.
I'm now being told to shut up.
That's fine.
One last slide, we're building software simulations,
as you might expect, of this stuff, and we're building 3D printed systems and