There have been some fairly incontinent attacks on Lovelace's
reputation and my bottom line is much the same as Doran's.
I wanna present some hard evidence that these incontinent attacks
on a kind of universal plane, I want to present you some concrete,
hard evidence that actually that these attacks are not warranted.
There are people who I read when I first started getting into this, great,
thank you.
Who I read when I first started getting into this and
I really have no right to be here.
I think I was asked in, I can't remember when Ursula asked me.
I think it's only because I was boasting
that it was the 50th anniversary of me writing my first computer program.
And Ursula, in the way that those of you have worked with her will know,
bounced up and down and said, oh you're just the person to convey Ada's excitement
in presenting the details of the analytical engine.
So, maybe I was just the person or maybe I wasn't just the person.
But I went on, what you might call, where's the, here,
have you got a, Thank you.
Does that change it?
>> Yes, it's working.
>> Which is the button?
>> This is the microphone.
>> Oh, this is microphone.
Okay.
[LAUGH] Thank you.
Please.
50 years a programmer, and I still can't press buttons.
>> [LAUGH] >> Thank you.
So, I went on what you might call a programmer's journey of discovery.
So, how many people are programmers sitting here?
Oh, damn there's enough of you.
Right? [LAUGH] Okay so,
you're going to understand.
You may understand more of what I have to say than I might have been
expecting you to.
In which case, I apologize for any of the technical mistakes.
Here, incidentally, is a piece of paper that I wanted to hand out to you.
What you would see on the piece of paper, which is actually reproduced as a fold out
in the inside of the stuff that you got in your goodie bag.
And at some point I'm gonna be referring to it.
This in the end is going to be the object of the study.
This is the table for the computation of the Bernoulli numbers.
So, we're gonna see if we can take the programmer's journey through Ada's paper,
learning as I did, a huge amount about the analytical engine.
I only knew it as reputation.
I only knew what Ada had done in the same way that
probably 90% of you sitting here knew it.
She wrote the first programs, the DOD, name, day, programming language after her.
She was the first computer programmer.
Those of you who are more inclined to be sympathetic to general
notions of heroics and visionaries, will also have digested
what I didn't know until I started reading the general literature on her,
which is that her reputation as a visionary, a pioneer,
the person who essentially did it on her own.
And as I think Torrence pointed out extremely well,
she didn't exactly do it on her own.
But here's some of the stuff that she did that impressed me as a geek, an aged geek,
long term programmer, rooting through essentially the documentation.
And I urge every single one of you, sorry, I urge you all [LAUGH].
The logicians in the audience will understand the difference between
those two statements.
I urge you all to go read the paper.
There's a huge amount in it.
There is, whoever you are,
there is a thread in this material that you will want to pick up on.
If you are historically minded, one of the threads for
the historically minded Is the way that you'll
find yourself as a historically minded geek getting incredibly impatient with.
While you're all programmers,
I don't know whether the people who
subscribe to the heroics school are gonna take this lying down or not.
There's an overwrought to some of the language in the paper.
One of the things that I found difficult as a geek in getting to grips with what I
had to get to grips with was there's a procession of
facts and then there's a long philosophical disquisition.
Eventually, you get back to the facts.
In other words, Ada writes more or less how I lecture.
So I'm going to.
>> [LAUGH] >> Okay.
So, here's the warning up front which I have not completed.
I'll complete it at the end, roughly speaking what she says is,
you get very excited at the beginning.
When you're considering a new subject, you overrate it like mad.
And then by natural reaction, you undervalue the true state of the case when
we discover there are Tanibal.
Some of the incontinent attacks I think, count as underrating,
and some of the stuff that I'm gonna say today,
I hope will be a sort of partial defense anyway of Lovelace.
Another part of the bottom line, in case I rub it on far too long,
is that [INAUDIBLE] was a programmer.
That this, despite the fact, and of course you can't see the little red marks,
despite the fact that there are errors in the table, works.
It is not a program for producing the Bernoulli numbers.
It is a scheme for a sequence of programs,
each of which will produce the next Bernoulli number, okay?
The reason that it could not be a program is that the machine,
which never existed anyway, it's abstract in more senses than one,
never had a facility for addressing, for calculating, places in the store.
Maurice Wilkes put it best.
Many of you will know who he is, and those of you who don't, it doesn't matter.
Maurice Wilkes put it best, he said The numbers of the columns, the V North,
V1, V2, V3.
Those numbers are just names, right?
Not one, two, etc,, were not addresses that could be calculated.
This is the fundamental limitation of the machine and
it's the fundamental limitation of the program.
We'll get to that in a second.
Let's just so, what are you gonna get if you're a programmer,
which I was, reading the paper over the last few months?
I kind of blurred snapshot of developing idea of the analytical engine.
You can tell when you're reading that she's not writing about quite the same
machine that Manabrias paper describes and there's some tension there.
We expect to read things that are in some sense coherent and
consistent 100, however, many 180 years after the fact, I can't do the arithmetic.
Somebody do the arithmetic, 180 years after the fact nearly 200 years
after the fact, that's good enough, isn't it.
We're now used to seeing things very focused and
when someone writes a paper or presents a paper, you're expecting to
see consistency between the beginning of the paper and the end.
And you're very uncomfortable, especially as a programmer geek like me, when you see
something at the beginning that's not quite the same assuming at the end.
And you have to learn to live with this and I haven't quite which is one of
the reasons for my over excitement at the moment.
You'll see several related notations for programming calculations in the engine.
Calculations for the engine.
And if you'll forgive me I'm gonna continue to call them calculations,
because until we get to the punchline you'll see that that's
what they actually are, I mean, straight line calculations rather than algorithms.
There are suggestions of algorithms, but what's in the tables
are straight line calculations, something you could do on a programmer with
Hewlett Packard calculator which didn't have loops or branching.
so and you're gonna see,
as I say, you'll see if you read it, the derivation of an algorithm and
it's near implementation as a program for the engine.
Okay, so here's the context, I think it's important to understand context,
particularly when you do this kind of time travel.
If you talk to people who don't know algorithms and
who don't know algorithmics, they'll tell you Ada wrote the first algorithms.
You know that she didn't.
The first algorithms, probably written by the Greeks or
the Babylonians expressed by the Greeks or the Babylonians.
There were certainly some non trivial algorithms and they'd been studied for
a long time by the time of the Greeks.
But between the time of the Greeks and at this time mathematicians
really never developed a proper notation for describing dynamic processes.
Roughly, the best you could get was
sort of recurrence relations, and that was fine, but control was always expressed.
In a very informal way when you were describing,
when you were describing our rhythms.
Here's another part of the context, this is a context which I hit first when I
came to study the paper or to read the paper anyway.
So, Allen Bromley was a very distinguished
engineer who studied Babbage's drawings extensively.
Morris Wilkes, arguably designed the first computer that ever produced,
that ever delivered a proper computing service to non-computer experts.
I mean he called it computers, his reputation rests on that.
There are other aspects to his reputation that we can talk about privately.
But his scientific reputation rests on him having developed EDSAC and so on.
Anyway, so this is Allen Bromley, writing to Maurice Wilkes,
when Allen Bromley was already kind of sick.
Although he had done extensive work on Babbage's drawings.
He says, I just worked again through Babbage's notebooks concerning his work on
the engine.
I've been greatly disappointed by what I found.
Through most of the period, the operation cards provided for
only four operations addition, subtraction, multiplication, and division.
Well we know that's enough to do the kind of calculations that we want to do.
What is the only there refers to the fact that
there are no realized mechanisms in the machine for allowing I
use a level program to write conditionals or loops.
That's where his disappointment rested, and it's a curious disappointment.
And it's a curious fact that Babbage, although he could write perfectly well
write what we would now write what we would call microcode which had loops and
so on, indeed, you saw the loops, the barrels going round and round.
That was not offered I think this is fair isn't it,
it's not offered, that is to say Babbage never
developed the machinery to enable this to be offered at the programmers level.
This is Bromlie's disappointment, okay?
There's another physical fact about the machinery that need to [INAUDIBLE] us now,
because it's gonna detain us a little later.
Okay, so Manabrius says, very early on in the translation,
that the machine's not a thinking being.
It's simply an automaton.
Babbage had to work really hard on devising machinery to do
things like division, okay?
What Manabrius is saying is, but you don't have to know how he did it.
If you read a little lower in here, it says, under the impossibility of
my here explaining the process through which this end is attained that is to say,
the full arithmetic.
Done by now, what we would now call microcode.
We must limit ourselves to admitting that the first four operations of arithmetic,
dah, dah, dah, dah,
dah, can be performed in a direct manner through the intervention of the machine.
That's it, here we have the detachment, in Manabrius' paper,
translated appropriately by Lovelace, from the machinery.
This is what makes our discussion a discussion, now,
of an abstract machine, Lovelace says.
Says something similar indeed, she's contrasting Manabrius'
presentation of the abstractions of the machine to an exposition
given by Dionysius Lardner, another scientific writer,
who had written, essentially, an anatomy of the machine.
He described the machine at the physical level in much the same way that
Doran described Babbage's Presentation
of the machine essentially discussing the clinking and clanking of the machinery.
What Lovelace says, is you don't need to understand, you don't need to hear
the clink and clank of the machinery to understand the machine,
to understand what it does, to understand it's function, okay?
[INAUDIBLE] on the contrary exclusively develops, her spelling not mine.
The apolitical view taking it for
granted that the mechanism is able to perform certain processes but
without attempting to explain how every computer scientist teaching your first
programing class That's the kind of thing you want to say to the students, isn't it?
You don't have to understand how the bits and
bytes are arranged, or what the bus does.
You just have to take for granted that this is what it does and we operate
at the level of the abstract machine, we might sometimes say the virtual machine.
Loveless, clearly understood,
so many at door and sadness presentation made me think that she might be
thinking of herself and of garbage when she wrote this.
It is obvious, with the invention of a calculating engine,
these two branches of the subject, I mean mechanism and function
what it is versus what it achieves in the abstract.
Mechanism and function, are equally essential fields of investigation and
beyond their mutual adjustment one to the other must depend all success.
They are indissolubly connected, though so
different in their intrinsic nature that perhaps the same mind
might not be likely to prove equally profound or successful in both.
Now if you want to have a little, metaphysical fantasy here you can think,
she's some, she's thinking of loveless in her.
She does function, he does structure, clicking and clanking.
Okay, so he's getting on to the business now.
This is Menabrea and what he's describing
here is the interesting thing here is if you only read the paper, as I have.
I've never seen any drawings of the analytical engine or anything in fact, yet
the first time I saw the connection between the machinery that was going
to clink and clank and these columns called V1, V2,
V3 etc was when Dorin sent me his slides on Saturday afternoon.
[LAUGH] I thought, of course, but that's what you think, isn't it?
Okay, in general, we have a series of columns consisting of discs which columns
we will designate as [SOUND] we may require, for instance,
to divide the number written on the column V1 by the one on the column V4 and
to obtain the results in column V7.
Well, everybody else that has ever read this paper or read anything about and
read anything by anybody who's read the paper, or
anything by anybody who's read anything by anybody's who's read the paper.
This is the way that knowledge about the paper is transmitted, incidentally.
Few people appear to go back to the paper.
I went back to the paper so you don't have to, but actually I recommend that you do.
You find out, this is interesting.
We're dividing the number written on the column, B one by that in the column obtain
the result in column B seven, it's a three address machine, well sort of, okay.
To effect this operation we must impart on the machine two distinct arrangements.
Through the first it's prepared for executing a division and
through the second of the columns it is to, sorry.
And through the second, the columns it is to operate on are indicated to and
also the column on which the results is to be represented.
That's true to three address machine.
Canoothy even describes it as a three address machine somewhere other in
his description of early algorithmic notation.
One specifies the operation, the other specifies the upper end result columns.
We need not detain us here in understanding how it is, I think, and
you can tell me whether I'm right or wrong, how it is the arrival of the result
address that triggers the mill to do its business.
Maybe that's wrong, Tim?
>> Yeah.
>> Is it right?
>> Depends on which version you look at.
>> Okay. >> [LAUGH]
>> Yeah, we should of
acknowledged Microsoft,
[LAUGH] earlier on they would of said the same thing about his PowerPoint, right?
>> [LAUGH] >> Okay,
the two mechanisms must be distinct.
So here, as someone who's really into the abstract machine, you're
being presented with a concrete detail of the machine, which is a bit disturbing.
What does it mean the two mechanisms must be distinct?
Meaning the mechanism for imparting the operation, setting up the mill,
the mechanism for sending the operand addresses that we would call them or
actually the operand names as Wilks would call them and result.
If this division is to be followed for example by the addition of two numbers
taken on other columns, the two original arrangements of the machine must be
simultaneously altered that is to say the op code and the operand.
If on the contrary, a series of operations of the same nature is to be gone through,
then the first of the original arrangements will remain and
the second alone must be altered.
Okay, so
you've got a series of multiplications, you set up a multiplication,
and then you start screaming the, operands and the results to it.
Or maybe even you maybe only stream the results if the operands are the same and
sending the result to the same place, to different places maybe that [INAUDIBLE].
As a program you don't want to know this detail, you really don't.
And actually the great achievement of Loveless If you follow through
the paper or maybe it was [INAUDIBLE] but
anyway, between them they manage to convince you that it doesn't matter, okay?
So here we go from a paper of
very concrete detail of the clinking and clanking.
So let's see about ten minutes, right?
Okay, I know I need the algorithm myself.
Oh well, okay, so.
Okay, let's just look here, the details almost don't matter.
Doran showed you some of this anyway.
You see the he's calculating [INAUDIBLE] table is calculating.
In this case, he's calculating the X
as part of the XY solution of this two linear equations, okay?
What you need to look at here, I'll point at it.
Is you see there there's four multiplications.
Different operands, different operands, and
two subtractions, and then a division, okay?
Now look, this takes three operations cards it's so designed, so
here in Manobrium's paper is something that turns out to be distracting and
a bit of a red herring through some of the rest of the presentation.
I don't want you to be distracted by that when you eventually get to
read the paper as you all will.
Okay, okay.
Lovelace and giving her account of the general purpose nature of the engine.
I at first thought, because I have to say I paid more attention to
the incontinent attacks than I had to the paper for a while, and
I base myself in front of the fandom for
having done that, but I hope I'm gonna redeem myself.
I thought was found a major distraction.
Anyways, here she's doing something very positive,
explaining the general purpose nature of the machine.
Here's what happens if you have written in the the bottom of the column.
At first I thought, she thought, in the column that's the memorandum,
that's what the computer scientists the abstraction relation.
Being written there.
So she writes a, n, and x.
So the variables on those columns are a, n, and x.
She's beginning to describe the programming notation that she's going
to use a bit later.
Okay.
Da da da da da.
Whatever the variables are,
you can compute a variety of different functions of a, n, and x.
And she gives us several, but here are two.
To calculate ax to the n with these variables on its columns, it requires six
multiplications to get x to the n, and one multiplication to get a times x to the n.
And now just a curious use of notation here.
And at first, I thought, what is.
You struggle with this.
You say, what is she doing?
And you see there, that yeah, there are six multiplications, okay.
But they're not six multiplications that arise necessarily from the structure of
what's been written.
So writing it down seven times is a bit strange.
Okay. And you see this from time to time where,
there is a counting of operations and because you don't know
what the variables are going to be, you don't know really what the program is.
This may be where the slogan, science of operations started to emerge.
Fortunately it goes away again.
As you read further you find that this distraction doesn't matter.
For X times A to the N the operations would be,
would be 34 multiplications here.
Okay.
But she's saying it's hard to detach itself
from the idea that really what she's saying is 34 times
is what you need to do, not 34 multiplications, is what happens.
Eventually, you get away from it.
There's Manabrea's complete table.
Here's a simplification of it, where I have brought out something
that sits there in the notation, but it sits there very quietly in the notation.
Which is that when a variable appears as an operand,
there's two ways of referring to it.
And one way just means the variable in the variable column stays
the same once it's been sent to the mill.
And there's another form, which I've underlined in blue in this calculation,
the precise role doesn't matter there, where those blue
mentions denote a reading and then zeroing of the column.
This is gonna prove decisive in one of the mistakes in the table.
Reiner, I've corresponded with you but I don't know where you are.
Can you put up your hand so I can see?
Reiner?
You're Reiner?
Hello I'm Bernard.
So I'm about to describe some work that Reiner and
I essentially did along parallel tracks and then Dorin introduced us.
And we discovered we'd been coming to the same conclusions,
namely that there were mistakes in the.
Oh, I'm going backwards and I should be going forwards, okay.
Okay, so by the end of the first phase, before we hit note g,
you've begun to get the flavor of the way in which g is describing as a table,
the machine codes of the program, the instructions of the program.
I've essentialized this.
I've discarded quite a lot of this, the same height above that.
Of stuff showing columns with zeros on them, and so on and so forth.
So another kind of distraction you wanna watch for.
So anyway, so just let's try and
understand the Bernoullian under table in [INAUDIBLE] five, ha!
All right, Richard Bornat was right.
Too much material.
Okay.
However, I listened to him I put a conclusion first.
Okay, so what the table actually demonstrates is the computation of B7,
given that B1, B3 and B5 have already been computed, okay.
So, actually I sort of disagree with Dorum,
because as you read down the side of these tables, there is an implicit sequencing.
There.
Okay, and all straight line calculations we've seen so
far, everything that didn't have a looping.
That implicit sequence is enough and
if you put each of those things on cards that would have been enough too.
Right, but here's where she begins to show
that she differs from Babbage in her view of what the machine can do.
Okay, I mean can do mathematically even.
Independent of what interpretations you give to it.
Okay, so why would you do that?
Why would you not try and describe a general program, right?
You know, why didn't you write the preconditions, the loop in there in
the [LAUGH] Okay, this style of explanation goes
right back to Babylonian times if you look at how Babylonians explore the algorithm.
They give you very concrete description of a particular calculation and then
by the side, you'll see the generalized explanation of what is going on.
This is mixed in the object of [INAUDIBLE] as you'll see
open the inside of your goodie and you'll see
there is both a concrete description of what she's the particular calculation she,
she's talking about and
some disconcerting here it's it looks like this touch panel has lost connection.
[LAUGH] All right.
But what her intention is and
her explanation is, her discourse about the table.
It's okay.
It was just, I was telling the truth but it was sort of a pleasantry.
[LAUGH] Right.
So, Lovelace's intention is to show that the table can be interpreted
more generally.
And certainly, Reiner and I independently and then together,
despite noticing bugs in the table, we've shown to our own satisfaction.
And I think it would be to your satisfaction.
If we have the time to explain it, that this is the case.
Certainly I now believe that if the engine had existed,
Lovelace would have noticed the bugs very quickly.
So you're nearly all programmers.
Hands up, those of you whose first program,
[LAUGH] You know the end of this I'm pleased.
Okay.
I do remember my first program.
Actually I tell you there are endless stories I can tell.
I'm just anecdotal is a word that could have been coined for me.
[LAUGH] >> Okay.
Had the engine existed Lovelace would have noticed the bugs very quickly.
The really curious thing here and the thing that is irritating, I think to Dora,
to me, to Reiner certainly, is that since this [INAUDIBLE] started,
in this book, Audrey's book but this table denoted a program and
that the program computed the delineate on this.
Nobody's gone back to the table and try to verify or at least exam.
Whether it computed anything remotely like the Bernoulli numbers.
They've taken, right?
I mean, here at Hartree,
professor of what these days might be called computation at Cambridge says.
The evaluation of the Bernoulli numbers from this recurrence
relation is programmed for the analytical engine.
This is the end of his stuff on Babbage's analytical engine, right.
So he credits Ada with producing this producing the table,
just says bang, it does it.
Everybody else who's written about this,
including the editor of the important volume Faster Than Thought,
that's E.V. Boden, isn't it?
Seems to have gone back to that and simply taken at face value that claim.
Now, it's true and it's not true in the way that your program works and
it doesn't work, right.
What I mean is, not talking about Schrodinger's
program, here.
We do give an explanation, I'm not going to trouble you by taking you to the end.
We simply believe that she would have noticed the bugs very quickly but
we are mystified at the fact that there has been no acknowledgement
of the bugs which are significant.
I even looked into the literature, I read a lot in the literature.
I read a Russian paper.
Sorry, I read a translation of a Russian paper.
>> [LAUGH] >> I can't
lie in front of my coauthors, right?
I read a translation of a Russian paper which claims
we translated this program and it runs.
Okay, but that's not what they did, that's not what they did, okay.
If they had translated the table back literally as a simulation,
which is what I did at first its where began to have my doubts.
I'm trying desperately to understand what is going on here.
I wrote a desperate letter to Doren saying, hey Doren,
has anybody actually run this right?
I sent a courtesy copy to our organizer who said haven't you guys got
something better to do than to find errors >> [LAUGH]
>> Right?
>> Bless her.
There is something better to do,
which is to say if the spirit of the programmer had been followed here and
if she had been allowed to find the mistakes would the program have run?
And the answer to that is unquestionably in my mind yes.
And actually I'll go further than that.
There are, she struggles.
She argues at the end.
That although she's given you a very specific description of
the state of the machine having computed V5 and about to compute V7.
Really the part of the table, oh, there's some Bernoulli numbers by way.
>> [LAUGH] >> Right, right.
The reason I show you these is that some of them
are slightly under 50 digits long, right?
And some of them are unquestionably not.
So there's a whole other thread here for the numerical analysts in the audience.
Hands up.
>> [LAUGH] >> Which is, actually, just
how far could the computation have gotten and calculated accurately these values.
I've shown them as rational representation.
[INAUDIBLE] I thought that was the safest way to do it.
What she says is, by using this recurrence relation, we do
a first series of computations that essentially computes B1, second series of
computations that computes B3, a third series of computation that computes B5 and
then that third series of computations which is what I describe as the body of
the loop will compute any Bernoulli number from all of its predecessors.
She argues very strongly that that is the case and she makes her case.
When you read the paper or at least when you read my paper or
Reiner's paper you will see that that is the case.
And I think that we should applaud her for that and also her observation at the very,
very end of all of this, which is [INAUDIBLE] God you were right Richard.
>> [LAUGH] >> Right?
Here's what she says.
It's interesting to observe that so
complicated a case as is calculation as the Bernoullian numbers nevertheless
presents a remarkable simplicity in one respect is.
It is that during the processes for the computation of millions of these numbers,
no other arbitrary modification would be requisite in the arrangements except in
the above simple and uniform provision.
She's inventing loop body abstraction, uniform provision for
causing one of the data periodically to receive the finite increment unity.
Very last word, I programmed the simulator which equipped the machine
with this ability to sequence through tables,
in other words turning numbers of columns into addresses of columns.
I literally took her literal but slightly corrected program.
I mean couple of places where its wrong.
But not drastically wrong.
Run it and well okay so we actually went up by showing
Bernoullian numbers we went up to about B 991, okay.
And then my patience was exhausted, and your's is now.
>> [LAUGH] >> Thank you for listening.
>> [APPLAUSE]
>> Sorry, [INAUDIBLE]