successor to ALGOL 60. More suggestions for new features
were made and in May 1965, Niklaus Wirth was com-
missioned to collate them into a single language design.
I was delighted by his draft design which avoided all the
known defects of ALGOL 60 and included several new
features, all of which could be simply and efficiently
implemented, and safely and conveniently used.
The description of the language was not yet complete.
I worked hard on making suggestions for its improve-
ment and so did many other members of our group. By
the time of the next meeting in St. Pierre de Chartreuse,
France in October 1965, we had a draft of an excellent
and realistic language design which was published
in June 1966 as "A Contribution to the Development of
ALGOL", in the Communications of the A CM.
It was implemented on the IBM 360 and given the title
ALGOL W by its many happy users. It was not only a
worthy successor of ALGOL 60, it was even a worthy
predecessor of PASCAL.
At the same meeting, the ALGOL committee had
placed before it, a short, incomplete and rather incom-
prehensible document, describing a different, more am-
bitious and, to me, a far less attractive language. I was
astonished when the working group, consisting of all the
best known international experts of programming lan-
guages, resolved to lay aside the commissioned draft on
which we had all been working and swallow a line with
such an unattractive bait.
This happened just one week after our inquest on the
503 Mark II software project. I gave desperate warnings
against the obscurity, the complexity, and overambition
of the new design, but my warnings went unheeded. I
conclude that there are two ways of constructing a
software design: One way is to make it so simple that
there are obviously no deficiencies and the other way is
to make it so complicated that there are no obvious
deficiencies.
The first method is far more difficult. It demands the
same skill, devotion, insight, and even inspiration as the
discovery of the simple physical laws which underlie the
complex phenomena of nature. It also requires a willing-
ness to accept objectives which are limited by physical,
logical, and technological constraints, and to accept a
compromise when conflicting objectives cannot be met.
No committee will ever do this until it is too late.
So it was with the ALGOL committee. Clearly the
draft which it preferred was not yet perfect. So a new
and fmal draft of the new ALGOL language design was
promised in three months' time; it was to be submitted
to the scrutiny of a subgroup of four members including
myself. Three months came and went, without a word of
the new draft. After six months, the subgroup met in the
Netherlands. We had before us a longer and thicker
document, full of errors corrected at the last minute,
describing yet another but to me, equally unattractive
language. Niklaus Wirth and I spent some time trying to
get removed some of the deficiencies in the design and
81
in the description, but in vain. The completed final draft
of the language was promised for the next meeting of
the full ALGOL committee in three months time.
Three months came and went--not a word of the
new draft appeared. After six months, in October 1966,
the ALGOL working group met in Warsaw. It had before
it an even longer and thicker document, full of errors
corrected at the last minute, describing equally obscurely
yet another different, and to me, equally unattractive
language. The experts in the group could not see the
defects of the design and they firmly resolved to adopt
the draft, believing it would be completed in three
months. In vain, I told them it would not. In vain, I
urged them to remove some of the technical mistakes of
the language, the predominance of references, the default
type conversions. Far from wishing to simplify the lan-
guage, the working group actually asked the authors to
include even more complex features like overloading of
operators and concurrency.
When any new language design project is nearing
completion, there is always a mad rush to get new
features added before standardization. The rush is mad
indeed, because it leads into a trap from which there is
no escape. A feature which is omitted can always be
added later, when its design and its implications are well
understood. A feature which is included before it is fully
understood can never be removed later.
At last, in December 1968, in a mood of black
depression, I attended the meeting in Munich at which
our long-gestated monster was to come to birth and
receive the name ALGOL 68. By this time, a number of
other members of the group had become disillusioned,
but too late: The committee was now packed with sup-
porters of the language, which was sent up for promul-
gation by the higher committees of IFIP. The best we
could do was to send with it a minority report, stating
our considered view that, "... as a tool for the reliable
creation of sophisticated programs, the language was a
failure." This report was later suppressed by IFIP, an act
which reminds me of the lines of Hilaire Belloc,
But scientists, who ought to know/Assure us that it must be so./
Oh, let us never, never doubt/What nobody is sure about.
I did not attend any further meetings of that working
group. I am pleased to report that the group soon came
to realize that there was something wrong with their
language and with its description; they labored hard for
six more years to produce a revised description of the
language. It is a great improvement but I'm afraid, that
in my view, it does not remove the basic technical flaws
in the design, nor does it begin to address the problem of
its overwhelming complexity.
Programmers are always surrounded by complexity;
we cannot avoid it. Our applications are complex because
we are ambitious to use our computers in ever more
sophisticated ways. Programming is complex because of
Communications February 1981
of Volume 24
the ACM Number 2