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.").