How do we tell truths that might hurt?
Edsger W. Dijkstra's 1975 discourse emphasizes the need for honesty in computing, critiques outdated programming languages, and advocates for simplicity to enhance reliability while questioning the community's willingness to confront these issues.
Read original articleEdsger W. Dijkstra's 1975 discourse addresses the challenges of communicating uncomfortable truths in computing science. He argues that while it is scientifically dishonest to suppress unpleasant truths, doing so often leads to personal and professional backlash. Dijkstra highlights the tendency of the computing community to ignore significant issues, such as the inadequacies of programming languages like FORTRAN and COBOL, which he describes as detrimental to intellectual integrity. He asserts that programming is a complex branch of applied mathematics and that the tools used in programming can significantly influence thought processes. Dijkstra lists several harsh truths about programming languages and practices, emphasizing the need for simplicity and clarity in programming to ensure reliability. He critiques the reliance on outdated languages and the detrimental effects of poor educational foundations on future programmers. Dijkstra concludes by questioning the community's willingness to confront these uncomfortable truths and the implications of remaining silent.
- Dijkstra emphasizes the importance of honesty in addressing uncomfortable truths in computing.
- He critiques the inadequacies of several programming languages, including FORTRAN and COBOL.
- The influence of programming tools on thought processes is highlighted as a significant concern.
- Dijkstra advocates for simplicity in programming to enhance reliability.
- He questions the computing community's readiness to confront and discuss these issues openly.
Related
Edsger W. Dijkstra
Edsger W. Dijkstra was a Dutch computer scientist known for his contributions to programming and theoretical computer science, including the shortest path algorithm and the first ALGOL 60 compiler. He received the Turing Award in 1972.
Against Best Practices
The author critiques the concept of "best practices" in programming, arguing they can be harmful and overly rigid, advocating for a more nuanced and critical approach instead of blind adherence.
How do you do, fellow web developers? A growing disconnect
The author highlights a disconnect between their programming knowledge and that of younger developers, expressing concern over a lack of understanding of traditional methods and implications for future programming depth.
E.W.Dijkstra: Simplicity is a great virtue ... complexity sells better.
E.W. Dijkstra's discourse advocates for integrating diverse disciplines into computing science, promoting its recognition as a formal branch of mathematics, and emphasizing simplicity and enjoyment in the simplification process.
It is not a compiler error. It is never a compiler error (2017)
Programmers often misattribute coding issues to compiler errors rather than their own misunderstandings. Mark Dominus emphasizes the importance of checking personal code first, as compiler bugs are rare.
- Some commenters defend the use of playful and anthropomorphic language in programming, arguing it enhances enjoyment and engagement.
- There is debate over Dijkstra's harsh critiques of certain programming languages, with some viewing them as outdated and others as overly critical.
- Several comments highlight the evolving nature of programming, particularly in relation to natural language processing and the rise of LLMs.
- Concerns are raised about the arrogance and entitlement that can arise in the computing community, as well as the challenges of addressing uncomfortable truths.
- Some commenters express skepticism about the relevance of Dijkstra's views in the context of modern programming practices and technologies.
Fuck all the way off with this "truth!" So much coding is made more enjoyable and profitable by people having fun like this. KoboldAI is one of my favorite projects, and like it or not, attention is driven to projects that are cute and lever human perception for their benefit. Mascots are even an important part of whether a technology becomes popular or not. This isn't stogy IBM black-tie mainframe-driven development anymore, nor should it be.
I know tons of professional developers who live and breathe computer science that enjoy having fun with their terminology and how they choose to represent and discuss computers, anthropomorphizing languages, projects, interfaces, iconography, etc.
Choosing to fight the disease will make enemies of your friends, it will rob you of your peace of mind, it will rob you of your faith in humanity, and bring you no closer to curing said disease.
The choice of CS departments to adopt the latter strategy is one made either from either wisdom or game theory, and it is in the self-interest of rational actors.
>But, Brethern, I ask you: is this honest? Is not our prolonged silence fretting away Computing Science's intellectual integrity? Are we decent by remaining silent? If not, how do we speak up?
If you are vexed by these questions, ask not the very same, but rather whether the intellectual integrity of public discourse (including nominally professional subsets of it) is worth your sense of safety, your sense of sanity, and your social circle, because you'll pay with those every time you play the unwinnable game of trying to convince the world of uncomfortable truths.
That said, this one really is a truth: "Simplicity is prerequisite for reliability."
And this one is no longer true since LLMs: "Projects promoting programming in "natural language" are intrinsically doomed to fail."
This is pretty wild when you think about it. I wouldn't expect a lab to check another lab's work by re-writing their code (although, I'd love to hear some examples!), but if you don't, you're really powerless against whatever bugs they wrote into their scientific code.
- is designed for you
- never talks back
- can be mastered
selects for (and breeds!) a deep sense of arrogance and entitlement
https://news.ycombinator.com/item?id=24776336 - Oct 2020 (73 comments)
https://news.ycombinator.com/item?id=4926615 - Dec 2012 (67 comments)
https://news.ycombinator.com/item?id=2279260 - Mar 2011 (74 comments)
https://www.cs.utexas.edu/~EWD/ - for this and many more writings by Dijkstra.
Ah.
I don't know if he'd be pleased or dismayed to learn that here in 2025, programming is often a whole lot easier than pure mathematics. Programming is often small science experiments performed on immensely complex systems. Math is still actually math.
While this might have been true in 1975 with FORTRAN, I wonder if this holds true today?
A better question might be, how should you proceed when your truth does not want to be heard?
We're gonna be stuck with cpp for at least a thousand years aren't we.
That said, I found this one particularly interesting given the recent rise of LLMs:
Projects promoting programming in "natural language" are intrinsically doomed to fail.
I assume he's referring to languages like COBOL and SQL, the latter still going strong, but I can't help but think that this part will change a lot in the coming decades.
Sure we'll likely still have some intermediary language with strong syntax and similar, just like how LLVM, C# and similar have their IL, but it's hard to think the majority of the programming is done typing in regular programming languages like JavaScript, C++ or similar in 2050.
[1]: I have of course learned about his algorithm
Just my two cents.
Related
Edsger W. Dijkstra
Edsger W. Dijkstra was a Dutch computer scientist known for his contributions to programming and theoretical computer science, including the shortest path algorithm and the first ALGOL 60 compiler. He received the Turing Award in 1972.
Against Best Practices
The author critiques the concept of "best practices" in programming, arguing they can be harmful and overly rigid, advocating for a more nuanced and critical approach instead of blind adherence.
How do you do, fellow web developers? A growing disconnect
The author highlights a disconnect between their programming knowledge and that of younger developers, expressing concern over a lack of understanding of traditional methods and implications for future programming depth.
E.W.Dijkstra: Simplicity is a great virtue ... complexity sells better.
E.W. Dijkstra's discourse advocates for integrating diverse disciplines into computing science, promoting its recognition as a formal branch of mathematics, and emphasizing simplicity and enjoyment in the simplification process.
It is not a compiler error. It is never a compiler error (2017)
Programmers often misattribute coding issues to compiler errors rather than their own misunderstandings. Mark Dominus emphasizes the importance of checking personal code first, as compiler bugs are rare.