On hygiene, intellectual and otherwise (1989)
cs.utexas.edu
cs.utexas.edu
"the Department of Defence declared a moratorium on all funding of sterilization research..."
I can find no evidence that such a manifesto ever existed or that the DoD ever took such an action. When I search for these, the top link is this essay. I know there was resistance to sterilization, but I suspect Dijkstra may have been exaggerating it to make his point.
Ironically, of course, the DoD did fund the research and development of several programming languages and tools that would have offered precisely the hygiene Dijkstra would like to see in software development. Specifically I'm referring to Ada. Which was rejected by the industry (for various reasons, some legit and some not).
No tool will force you to wash your hands. Hygiene is a matter of knowledge, and discipline ; and it's mostly unrelated to the tools you're using.
The power of your tools is an orthogonal issue.
It isn't related to the discipline and cleanliness issue: for example, dynamic typing allows you to make design miracles, as well as stinking piles of obscure-broken-beyond-repair code. Actually, a lot of powerful tools have this double-edged sword quality: dynamic typing. C++ templates. shared_ptr/garbage collection. inheritancy. lambdas/closures. "eval". monkey patching. tests (!).
Sure, tools like Coq or even Rust's static type system will provide, at compile time, extra guarantees that your code will work as intended.
However, they won't provide guarantees that your program will be easy to maintain/modify. Actually, if misused, they could have the opposite effect (i.e as soon as you try modifying the smallest bit of code, compilation/checking fails with unhelpful error messages).
Don't get me wrong: good tools are important, and nobody's going to make me write a webserver in assembly language, or a NES emulator in PHP!
However, in my experience, their impact on code maintainability is negligible in front the impact of the developper herself. Ultimately, it all hinges on who's writing the code.
Like, airlines cut down on pilot errors through checklists and improving procedures, not by making pilots more knowledgable and disciplined.
I assume surgeons = programmers, nurses = QA. No idea what the other fictional entities map to though.
> Despite various publications of results where hand washing reduced mortality to below 1%, Semmelweis's observations conflicted with the established scientific and medical opinions of the time and his ideas were rejected by the medical community. Semmelweis could offer no acceptable scientific explanation for his findings, and some doctors were offended at the suggestion that they should wash their hands.
Are you sure about that, Dijkstra? Richard Feynam seems to disagree:
"In general, we look for a new law by the following process. First, we guess it (audience laughter), no, don’t laugh, that’s really true. Then we compute the consequences of the guess, to see what, if this is right, if this law we guess is right, to see what it would imply and then we compare the computation results to nature, or we say compare to experiment or experience, compare it directly with observations to see if it works.
If it disagrees with experiment, it’s wrong. In that simple statement is the key to science. It doesn’t make any difference how beautiful your guess is, it doesn’t matter how smart you are who made the guess, or what his name is… If it disagrees with experiment, it’s wrong. That’s all there is to it.”
- Richard Feynman
This part seems relevant today:
> We know that no responsible scientist guesses his formulae but derives them...
I am troubled by the epistemological blankness of our age of multi-gigabyte mathematical proofs and inscrutable multilayer neural nets....
n.b. this is a very certain kind of satire. It's not a literal retelling of something that happened.
Treat them as flowers in a garden. Cultivate some, weed out others. The most focus should be on the few that flourish best, and they'll be products.
We know that no responsible scientist guesses his formulae but derives them and in the same vein we derive our programs by formal calculation. This is a time-honoured tradition, formalization is just a matter of intellectual hygiene, and we should be quite confident that, indeed, this undertaking makes all the sense in the world, but we hesitate and are ambivalent about it because, all around us, our hygienic practices are opposed, derided and ridiculed.