Pretty arrogant gatekeeping. And obviously wrong.
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/E...
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.").
Dijkstra on the other hand believed programming students should be forced to prove the correctness of their programs.
> 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?
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.
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?
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.