In EWD 32 Dijkstra shares his “meditations” on the state of the Art (or rather Science, as he prefers to say) of Programming. Machine design was ugly, programming as a discipline was undeveloped. This was 1962.
Programmers were hired for applying tricks and Dijkstra loves the development that there is
… the slowly growing group of people who think it more valuable that the man should have a clear and systematic mind.
He goes on to discuss how programmer and machine designer should collaborate to create better machines and programming languages. Which was very necessary because Dijkstra believed at that time the computer manufacturing industry was taking over computer design from universities. But this brought a commercial angle to computer design that Dijkstra was unhappy with.
They seem to design for the customer that believes the salesman who tells him that machine so-and-so is just the machine he wants.
Dijkstra goes on to share his thoughts on how to improve The Tool – by which he means the programming language, translator and machine. Nowadays we have so many languages and machines, we hardly think about this tool. We think of tools as tools: a given rather than a thought. And of course we have massive debates about programming languages, hardware etcetera. But some of the concerns have disappeared. Nobody really seems to care anymore about machine design. It has become a commodity. It should be fast and robust. Hardware hardly provides any distinguishing features. If so, it is about size and energy, and no longer about performance and reliability.
But the last one he mentions is an eternal difference, one which we still haven’t landed on. And maybe we never will. Because it is a subjective one. A characteristic you wouldn’t expected in our Beta world of computers and programmers.
As my very last remark I should like to stress that the tool as a whole should have still another quality. It is a much more subtle one; whether we appreciate it or not depends much more on our personal taste and education and I shall not even try to define it. The tool should be charming, it should be elegant, it should be worthy of our love. This is no joke, I am terribly serious about this. In this respect the programmer does not differ from any other craftsman: unless he loves his tools it is highly improbable that he will ever create something of superior quality.
At the same time these considerations tell us the greatest virtues a program can show: Elegance and Beauty.