[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
