I'm not sure it's satire, though it's certainly hyperbolic and exaggerated (regarding the impact of learning BASIC). It's also important to keep in mind the sort of language BASIC was at the time and Dijkstra's aversion to goto statements and unstructured programming. It had some of the elements needed for structured programming, but they could easily be bypassed. `GOSUB`, for instance, allowed for calling subroutines and stored a return address that `RETURN` would use. But `GOSUB` just jumped to a label:
10 GOSUB 100
100 <DO STUFF>
...
200 RETURN
It was entirely possible to jump anywhere inside the subroutine, and commonly done. For instance, the first time you call it maybe you want to initialize some variables but then keep them the same later:
10 GOSUB 100
20 GOSUB 130
100 <RUN ONCE CODE>
110 <MORE RUN ONCE>
120 <LAST RUN ONCE>
130 <THE REST>
200 RETURN
The logic behind doing this isn't actually expressed in the code. To an extent, he's right, there's a great deal of unlearning that has to happen after learning to program this way.
There are certain patterns of programming that people pick up based on their early experience which can be hard for them to overcome later ("The determined Real Programmer can write FORTRAN programs in any language.").
Yes but this is also how it works in assembler, and nobody in their right mind would say knowing assembler would make you a worse programmer. We can all agree that BASIC is a crappy language by modern standard, but it did have a repl and was interpreted which gave it a quick turnaround, ideal for experimenting and learning.
Dijkstra on the other hand believed programming students should be forced to prove the correctness of their programs.
You agree that "BASIC is a crappy language by modern standard". Why is Dijkstra not allowed to make that point?
> Dijkstra on the other hand believed programming students should be forced to prove the correctness of their programs.
I did that in my CS homework like many others and I consider being able to reason about the properties of a program/algorithm a core competence of a CS graduate. Why do you think it's a problem?
> You agree that "BASIC is a crappy language by modern standard". Why is Dijkstra not allowed to make that point?
But...that is not the point he is making. He is not saying BASIC is a crappy language - he is saying programmers which have learnt BASIC are bad programmers, even if they learn other languages and techniques. That is a pretty arrogant and not particularly clever thing to say.
Have you ever tried to teach the right way of doing something to someone who has been doing it the wrong way for a long time and wants to argue that there's no difference?
Sure. I usually approach it by showing why I think the better way is better, rather than just calling them idiots. It have also often happened to me I have reconsidered something I had considered "the right way" for many years, due to a convincing counterargument or example.
For example I considered Dijkstra-style single-entry single-exit the right way for years, until I realized that early exits in many cases made functions a lot simpler and more straightforward.
> Dijkstra on the other hand believed programming students should be forced to prove the correctness of their programs.
This is why Dijkstra wrote his newsletter by hand - he couldn't find a word processor that had been proven correct, nor a proven correct OS to run it on.
I'm kidding, but it illustrates the problem with Dijkstra's approach. If not just students but actual working programmers had to prove the correctness of their programs, we'd have much less software - say, 5% as much. But that other 95% does some actually useful things, even though it can still break. Would you rather have a word processor that crashes every once in a while? Or would you prefer a typewriter?
And that core statement being made, that points to the "truth that might hurt", is the difference between satire and humour. You provided one reason for why that EWD should be considered satire (because it criticizes a status quo through hyperbole and exaggeration), while stating at the beginning that you don't consider it satire. That's a form of satire by itself. Smiley.
I am unable to read that presentation as satire. And as somebody that grew up using BASIC, he is much more correct than the overall "consensus" of the time. (Read "consensus" as "successful propaganda".)
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/E...