settled that, he wrote down a program
that met the proof’s requirement. You
lose a lot when you restrict the role of
mathematics to program verification
as opposed to program construction or
derivation.
Another experience in 1959 was attending the “zeroth” IFIP Congress
in Paris. My international contacts
had started in December 1958, with
the meetings for the design of ALGOL
60. My boss, Aad van Wijingaarden,
had had a serious car accident, and
Jaap Zonneveld and I, as his immediate underlings, had to replace him.
Zonneveld was a numerical analyst,
while I did the programming work.
The ALGOL 60 meetings were about
the first time that I had to carry out discussions spontaneously in English. It
was tough.
you’ve remarked that learning many
different languages is useful to pro-
gramming.
Oh yes, it’s useful. There is an enormous difference between one who
is monolingual and someone who at
least knows a second language well,
because it makes you much more conscious about language structure in
general. You will discover that certain
constructions in one language you just
can’t translate. I was once asked what
were the most vital assets of a competent programmer. I said “
mathematical inclination” because at the time it
was not clear how mathematics could
contribute to a programming challenge. And I said “exceptional mastery” of his native tongue because you
have to think in terms of words and
sentences using a language you are familiar with.
how was ALgoL 60 a turning point?
Computing science started with AL-
GOL 60. Now the reason that ALGOL 60
was such a miracle was that it was not
a university project but a project cre-
ated by an international committee.
It also introduced about a half-dozen
profound novelties. First of all, it in-
troduced the absence of such arbitrary
constraints as, say, ruling out the sub-
scripted subscript, the example I men-
tioned. A second novelty was that at
least for the context-free syntax, a for-
mal definition was given. That made a
tremendous difference! It turned pars-
ing into a rigorous discipline, no longer
a lot of handwaving. But perhaps more
important, it made compiler writing
and language definition topics worthy
of academic attention. It played a ma-
jor role in making computing science
academically respectable. The third
novelty was the introduction of the
type “Boolean” as a first-class citizen.
It turns the Boolean expression from a
statement of fact that may be wrong or
right into an expression that has a val-
ue, say, “true” or “false.” How great that
step was I learned from my mother’s
reaction. She was a gifted mathemati-
cian, but she could not make that step.
For her, “three plus five is ten” was not
a complicated way of saying “false”; it
was just wrong.
all the programming
i did was on paper.
So i was quite
used to developing
programs without
testing them.
who had to agree with the report, none
saw that sentence. That’s how recursion was explicitly included.
Was this called recursion at that time?
Oh yes. The concept was quite well
known. It was included in LISP, which
was beginning to emerge at that time.
We made it overlookable. And F.L.
Bauer would never have admitted it in
the final version of the ALGOL 60 Report, had he known it. He immediately
founded the ALCOR Group. It was a
group that together would implement
a subset of ALGOL 60, with recursion
emphatically ruled out.
What were other novelties in ALgoL 60?
A fifth novelty that should be mentioned was the block structure. It was a
tool for structuring the program, with
the same use of the word “structure”
as I used nine years later in the term
“structured programming.” The concept of lexical scope was beautifully
blended with nested lifetimes during
execution, and I have never been able
to figure out who was responsible for
that synthesis, but I was deeply impressed when I saw it.
Finally, the definition of the semantics was much less operational than
it was for existing programming languages. FORTRAN was essentially defined by its implementation, whereas
with ALGOL 60 the idea emerged that
the programming language should be
defined independent of computers,
compilers, stores, etc.; the definition
should define what the implementation should look like. Now these are
five or six issues that for many years
the United States has missed, and I
think that is a tragedy. It was the obsession with speed, the power of IBM,
the general feeling at the time that
programming was something that
should be doable by uneducated morons picked from the street, it should
not require any sophistication. Yes…
false dreams paralyzed a lot of American computing science.
When did you understand that pro-
gramming was a deep subject?
I had published a paper called “
Recursive Programming,” again in
Numerische Mathematik. 8 In 1961, I was
beginning to realize that programming
really was an intellectual challenge.