3 ms·
That sounds like Dijkstra, from EWD498 (1975): http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD498.html http://www.cs.utexas.edu/users/EWD/transcr
by smarks 9y ago
That sounds like Dijkstra, from EWD498 (1975):
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD498.html http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EW...
At least, the "mentally mutilated" phrase is about BASIC. The "criminal offence" phrase was actually about COBOL. You'll note that Dijkstra also had choice words about FORTRAN, APL, and PL/I, which were popular programming languages of the day.
It's tempting to say that Dijkstra was being tongue-in-cheek when he wrote this. I never met him, but based the attitude I picked up from his other writings, I'd guess that if you had asked him he'd have said he was completely serious.
And he has a point. I first learned programming in BASIC, and look how I turned out. (Well maybe I confirm Dijkstra's point. Others will have to judge.) But I do recall a bunch of characteristics of early BASIC systems that potentially led to terrible programming habits: GOTO and line numbers leading to spaghetti code; all global variables; no scope; no functions; self-modifying code (overlays); etc. All of these had to be unlearned at some point.
- jacquesm 9y agoThere were many different flavors of basic and some were actually quite good. GFA Basic on the Atari ST and BBC Basic on the BBC Micro for instance.
- retbull 9y agoThat is how I started with Java. I mean I started 5 years ago but I quickly learned other ways by simply running into intractable problems when you try to work that way. Modern programs end up so complicated that having hundreds of lines of crap in a single function is impossible to reason about and causes you to write bugs into everything. I think it was working with others and pulling apart code and shrinking it down until it does one thing and one thing alone was the most important learning experience. Dijkstra might be one of the smartest computer scientists ever but I don't think that his assessment of learning that way was correct.
- seanwilson 9y ago> But I do recall a bunch of characteristics of early BASIC systems that potentially led to terrible programming habits: GOTO and line numbers leading to spaghetti code; all global variables; no scope; no functions; self-modifying code (overlays); etc. All of these had to be unlearned at some point. Compared to just being told these things are bad and should be avoided, I'd like to think that being forced to code in the above ways makes you better rounded as you have first hand experience for why those practices are a bad idea. It's not like you have much choice if you have to code in something like assembly as well. I've worked with programmers before who can regurgitate the names of current bad practices but can't describe the reasoning behind them which isn't a good thing. Personally, I think it's an absurd idea that e.g. if you began coding with all global variables and no functions you'd be unable code in a different way. If you're amazing at coding in an environment that makes it challenging to write complex programs, you're going to quickly become efficient at writing code in environments that makes it easier to write complex programs.
- smarks 9y agoSure, I don't disagree. Personally, after moving away from BASIC to other languages, I felt freed from a bunch of problems I had had with BASIC. For example, scope eliminated problems with reuse of variable names. Perhaps lots of other people who started with BASIC felt the same way. On the other hand, sometimes other people never transcended those bad habits from BASIC. Sometimes you run across programs that are one big function, with variables reused, etc. I don't know what the thought processes are of programmers who write such code. There's an old saw, "You can write FORTRAN in any language." Maybe this should be applied to BASIC as well. That's probably what Dijkstra was driving at. I don't know about "mental mutilation" (certainly hyperbole, in my book) but only Dijkstra knows what he really meant.
- seanwilson 9y ago> On the other hand, sometimes other people never transcended those bad habits from BASIC The kind of people that don't actively keep up with current best practices and latest developments are always going to be bad programmers though. It's not like you can pick a perfect language to start coding in that will teach you all the current and future best ways to do things. I personally don't think it matters what language you start coding in as long as you're always learning and adapting.