[The] last time we were here - last release I did, I think - was
all about algol 60 and its 60th birthday.
We left it in a situation, i think, where algol 60 -
it was agreed by everybody - had been enormously influential. Iit was a rallying
point for discussions and so on. There were aspects of it that some
people didn't like but it did set down a kind of
benchmark of sorts. But you could legitimately then ask and say: "Well.
all right, so where did high-level languages
go after Algol 60?" Was there on the Algol 60 committee a "... oh heck!
Where do we go from here" moment? Oh yes! There was.
Some of you, I think, will know that an influential
member on the Algol60 committee - I mean we've talked about
Backus and Naur - John Backus and Peter Naur - Backus Naur notational and all that. They weren't
the only people who managed to win the Turing-ACM award
just for what they did on the Algol60 committee.
Another person who benefitted hugely, and rightly,
was Niklaus Wirth. A lot of you will know all about him already.
He was on the Algol60 committee [WG 2.1]. Very respected
computer scientist. He's from ETH Eidgenossische Technische Hochschule
Is that in Zurich? And he and his big friend Tony Hoare
- famous British computer scientist - were bedded-in to the Algol60
Committee [WG2.1] But Niklaus took the view - and it helped
[the effort] enormously that, although Algol60
was what was democratically decided that they could do
for Algol6060, he, Nicklaus [Wirth] would run, as a sort of parallel project almost,
his version of what he thought was a bit more sensible.
So, for example, last time i just mentioned the horror of what can go
wrong with Call by Name. So. Niklaus was having none of that and
he came up with his own, as it were, "sensible" version
of Algol called AlgolW- 'W' for Wirth.
And of course i must now tell the obligatory Niklaus Wirth joke.
I don't know if this is true - but if it isn't true [then] it should be true!
And it's a very gentle and well-meant joke because he [Wirth]
deserves a lot. He's been a very influential figure.
So, there we are in the late 60s. Anybody on the Algol60 committee
is getting endless invitations to talk about
"Progress in Program Language Design" - and what really goes on, behind the
scenes at the IFIP Algol60 committee.
And Niklaus was not beyond accepting some of these [invitations].
And so, the story goes that he gets invited to America [USA].
[He is] introduced as, y' know: "Herr Professor Dr. Niklaus Wirth" and all that ...
from ETH in Zurich. And he stands up and says [imagined speech]: "I want to thank you all very much
for inviting me here. It is a great honour But i should say that it puzzles me -
here i am in the United States of America. When i'm back in
Europe even the cloth-eared Brits try very hard with my name.
They really try hard to say "nick louse veert"
and they get it pretty well right. But over here, unfortunately,
I'm forever being called "Nickel's Worth" A hand goes up from the audience and [someone] says:
"That's because Europeans call you by name
but Americans call you by value ! " And of course i hope there's just collapses [in laughter]
You know, absolutely the 'in' joke of all in jokes.
But the Algol60 committee did a grand job. But in the introspection
of having released it - and it's been pretty successful ...
So where do we go from here? And I think the next stage was code-named "AlgolX"
A little sub-committee gets appointed with ... perhaps led i think? by
Niklaus Wirth? i'm not sure. And of course the
subcommittee came back and said that the obvious
route for AlgolX was just to do [implement] AlgolW,
which is what it should have been all along !? But there was a
minority view which ... i don't know, felt very strongly about it - led i think
by the Free Uuniversity [Vrije Universiteit] of Amsterdam, They had an
again, a very venerable and respected computer
scientist called Adriaan van Wijngaarden and he,
and his followers, strongly believed that AlgolXx should take
a giant leap forward and not just be concerned with
tidying up the loose ends of what went wrong with Algol60.
And such was the level of the "... full and frank exchange of opinions"
[that] i think Tony Hoare and Wirth, and one or two others,
resigned in protest from Working Group 2.1 which was the committee
that defined Algol60. So that left behind a sort of rump of
equal fanatics but in a different direction. [A] very interesting direction!
And they eventually progressed to what became known as Algol 68
The AlgolW types, sort of went off and did their own thing. And this,
the result, was a big success. It's called Pascal. We all know about
Pascal ! It had a heavy take-up i
think because compilers were available. Good computer
scientists could take a look at it and say: "Yeah i think i could implement that"
It was a distillation, if you like, of all the bits [of Algol60] you could safely include.
And one of Pascal's strengths - but according to some also its
weaknesses - was that it deliberately restricted you
and kept things simple so that it was suitable as
a Teaching Language. And it was very successful in that
regard. No end of people in computing companies and
universities thought: "Oh i could write a Pascal compiler
it's not too bad [a task]" And it did make some important steps forward, for example
that you can do records in Pascal you can do pointers -
but here's the start of trouble ahead - basically Wirth believed - and he's right - and it
was echoed years later by James Gosling [in Java]: "Pointers are dangerous!" Pointers are some
of the most dangerous things you can have in a program.
Well, how do you cope with that danger?
And the answer from Niklaus Wirth, in Pascal, is [that] you may have a pointer to
something but only at that one level. You can't ...
You can have a pointer to an integer; but you cannot have a pointer to a
pointer to an integer. That, fans, immediately prevents it from
doing the 'triple ref trick'. Because we talked
about this a while ago [earlier episode] You can do very clever things
in list processing if only you can handle pointers to pointers ...
to pointers even. You just can't do that in Pascal !
And in the correspondence that came [to me] along with that episode i don't know [things like]:
"Oh but my library can fill in for you and if only you had used Extended Pascal ...
which wasn't agreed until about 10 years later
It works absolutely fine!" Yes, but at the time there were limits to what it could do with pointers.
The idea was this is a language for beginners and if you run out of
steam it's not too bad because
they'll go on to use more powerful languages later on.
Which in a way was fair enough. And there were dozens of compilers created between -
i think it was announced in 1969, Pascal. And over the next decade lots and lots
and lots of compilers [appeared]. Some of you will know that
it even got onto micros [microcomputers] and things like
UCSD Pascal, yeah, University of California at San Diego.
So at the end of the 70s a certain Brian Kernighan who was well
known to us, of course, and [still] is well known to us -
had been working long and hard in the UNIX community at Bell Labs
to convert what is called, of course, in UNIX parlance "Software Tools". It's the
bits and bobs that come with UNIX which are so
valuable. You know, the 'sort' function; the 'grep' the bits and pieces that aren't
literally in the kernel of the operating system but it
wouldn't be UNIX if you didn't have all of these things going [on]
And of course a lot of people [not yet using UNIX] said: "Well, it's all right for you. You do it in this C
and all that, [but] we haven't got a C compiler.
We like these tools! Can you do them in other languages?"
I think it went like that and Brian's colleague i.e. P.J aka "Bill" Plauger
originally, I think - but maybe both of them - did a thing called
Software Tools in FORTRAN. Because that [Fortran] was still a big big deal in
those early days. And then, once that had been established,
they actually got down and said: "Right, Pascal, very popular, let's do
Software Tools in Pascal !" When that task was complete at the end
of the 70s or early 80s, Brian wrote a memo
which i'm glad to say is much less contentious
than the infamous Vacation Memo about the jail-breaking of typesetters, but it caused a
lot of discussion! And at the end of that paper he comes up
with 9 things that Pascal got wrong,
or ignored, It reminds those of us who remember Hitchhiker's Guide to the
Galaxy; there is a philosopher in that series
who allegedly wrote this tome called "Where God went Wrong"
Well, all computer science can offer is Brian's list of "Nine Places
Where Pascal Went Wrong" And although the Pascal fans got
very huffy about it, they had to admit he'd got a point. He knew what he was
talking about. He wasn't just talking about teaching
this language to a few kids, where you could leave out the bits you
didn't like and didn't understand. He'd actually done a considerable volume
of work [for Software Tools in Pascal] One or two of the things we could just
pick out here, that he pointed out, was [that] there is no way to
declare a byte in
your Pascal computer-program]. You can't declare it as being of mode [type]
'bits' at all. You can't get down to the bit level [to do] manipulation.
He said: "All i wanted to do was to exclusive-or one bit-pattern with
another, which you do all the time in cryptography,
But i couldn't get down to the bit level I just couldn't".
And then somebody says: "Oh but there's a library that will do it for you and it's
in assembler ... " But that's not the point! The language itself won't let you do that.
And so people fond of the language first of all
when huffy about it. But then they had to say say well
... you've got a ghost of a point there, I must admit" And from then on it's always
amused me that it became almost like a [ritual] thing you know [to read a paper saying ...]
"My argument here does this, this and this and it disposes of
Kernighan's cases 2, 7 and 9", you see.
So it became very famous in that regard. He basically was pointing out :
there are ... the pointers are brain-dead will only do level one;
it's not a real system-implementation language because it can't do bits;
it has no facilities for separate compilation
you can't do bits and pieces of program separately and link them together afterwards.
He said: "Essentially this is fine it is a
teaching language. It does what it does well and it gives
you a protected environment which you cannot
break out of. Once you run out of steam with it
there are *no* workarounds. None!"
OK. So you have to move on to something else