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:
When implementing ALGOL 60, Hoare followed these principles:
I have regarded it as the highest goal of programming language design to enable good ideas to be elegantly expressed.
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.
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.
ALGOL 68, PL/1, and ADA all fell victim to too many features and too much complexity. Hoare says of PL/1:
...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.
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.
If you want a language with no subsets, you must make it small.