4 ms·
Taken from EWD 498, which is easily recognizable as satire unless you present it ouf of context. https://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD
by okl 8y ago
Taken from EWD 498, which is easily recognizable as satire unless you present it ouf of context.
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD498.html https://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/E...
- goto11 8y agoYeah, quite the opposite of "telling things as they are".
- marcosdumay 8y agoI 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".)
- goto11 8y agoIt was impossible for you to learn good programming?
- marcosdumay 8y agoIt took many years of unlearning. But that was on my own, I can't be sure if a teaching environment would make it faster.
- Jtsummers 8y agoI'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.").
- okl 8y agoAnd 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.
- goto11 8y agoYes 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.
- okl 8y agoYou 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?
- goto11 8y ago> 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.
- AnimalMuppet 8y ago> 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?