The Emperor's Old Clothes

by C.A.R. Hoare
summarized by Adam M. Costello

Hoare (the author) invented quicksort, but had trouble explaining it. After learning ALGOL 60, which features recursion, he was able to explain it much more neatly, and generalized the principle:

I have regarded it as the highest goal of programming language design to enable good ideas to be elegantly expressed.

When implementing ALGOL 60, Hoare followed these principles: Language design has impact on the implementor, the programmer, and the reader.

Programmers are always surrounded by complexity.... If our basic tool, the language in which we design and code our programs, is also complicated, the language itself becomes part of the problem rather than part of its solution.

The Elliot 503 Mark II software project failed because it was overambitious, it was not adequately specified, and its manager (Hoare) allowed the programmers to attempt things he himself did not understand.

...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.

ALGOL 68, PL/1, and ADA all fell victim to too many features and too much complexity. Hoare says of PL/1:

I knew that it would be...impossible to write a wholly reliable program when the correctness of each part of the program depends on checking that every other part of the program has avoided all the traps and pitfalls of the language.

At first I hoped that such a technically unsound project would collapse but I soon realized it was doomed to success.

Regarding ADA:

If you want a language with no subsets, you must make it small.


[AMC]  Prepared by Adam M. Costello
 Last modified: 1997-Feb-04-Tue 20:02:22 GMT
[Any Browser]