How did Dijkstra intend this to be received? I started reading this at face value and was nodding along until the comments on BASIC programmers being "mentally mutilated and "use of COBOL cripples the mind" which seem more like he was trolling?
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."
I wasn't aware of that thanks. I asked ChatGPT for an example(below):
I don't see as being enough of a step forward to change my previous statement.
>Before (Standard Technical English)
>To avoid excessive engine wear, it is imperative that the operator ensures the >lubrication system is functioning properly prior to starting the engine. >Failure to do so may result in severe damage.
>After (ASD-STE100 Simplified Technical English)
>Before you start the engine, make sure that the lubrication system works >correctly. If the lubrication system does not work correctly, the engine can be >damaged.
>The second type of [controlled natural] languages have a formal syntax and formal semantics, and can be mapped to an existing formal language, such as first-order logic. Thus, those languages can be used as knowledge representation languages,[4] and writing of those languages is supported by fully automatic consistency and redundancy checks, query answering, etc.
Doesn't your addition of a "yet" imply the parent is correct? We don't need to have a working counterexample in existence for that "truth" to be wrong, we just need to see that such a project is not "intrinsically doomed to fail".
Twenty years ago such projects were intrinsically doomed to fail. Today, they are on the cusp of not failing.
He wasn't trolling; the memo was intended for other similar academics, and the targets were all chosen to be outside of their bubble: on the "them" side rather than "us". None of his colleagues were using PL/I, Fortran, or Cobol, so they could just have chuckle. They weren't running a business depending on a single vendor, with crushing complexity, so hahaha, those guys are idiots. Etc.
There are other ways to attain reliability. Redundancy is one.
There is nothing simple about the way the Internet works but it continues to be proven robust against everything from temporary outage to nation-state revolution.
Exactly. I think Dijkstra was off on this one. Simplicity may be a prerequisite for a software engineer's sanity but there's no natural law that simple is reliable. If anything, nature trends towards highly interconnected, distributed systems with plenty of redundancy - just like the internet.
> That said, this one really is a truth: "Simplicity is prerequisite for reliability."
How's COBOL not simple though? COBOL is still in use in major banks today. We're not talking about an old Commodore 64 (love that machine by the way) still used by a lone mechanic in some rural area to compute wheel alignment (which does exists too): we're talking about at least hundred of millions of lines of COBOL still use in use throughout the world. Maybe still billions of line.
And it all just work.
COBOL has proved its reliability. I don't remember the language as particularly hard: a bit of a straightjacket but it isn't complicated, it's simple.
Dijkstra is not implying anywhere that COBOL is "complex".
On the other hand, I would not even call COBOL in itself reliable. I used it twice in my career, and it always needed a tremendous amount of handholding from user and developers to run, and very often the main user HAD to be a developer.
The first time was in a major bank, and the second time it was in a major university. My job in both cases was to migrate away from it and have a system that could run independently rather than needing a developer babysit it.
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."