9 ms·
How do we tell truths that might hurt? (1975)
- ThrowawayR2 6y agoPersonally, I've always thought this letter was the plainest proof that Dijkstra's pithy quotes (and those that parrot them) should not be taken seriously, no matter how entertaining they are. That list covers most the major languages of the day; what he would have to say about $(YOUR_FAVORITE_LANGUAGE) would surely be equally unkind were he alive today. That isn't to say that he did not have valid reasoning for his dislikes as a language expert and a mathematician but those reasons are not ones the bulk of practitioners would likely agree are valid.
- brundolf 6y agoYeah. Much of this list simply comes off as arrogant and narrow-minded. Whether or not it was tongue-in-cheek, I don't know. This one in particular: > It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration. is at best a hyperbolic joke. I dearly hope he wasn't being serious.
- ThrowawayR2 6y agoDijkstra provides glimpses of his reasoning scattered across his missives. For example, for FORTRAN in https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340... "The second major development on the software scene that I would like to mention is the birth of FORTRAN. At that time this was a project of great temerity and the people responsible for it deserve our great admiration. It would be absolutely unfair to blame them for shortcomings that only became apparent after a decade or so of extensive usage: groups with a successful look-ahead of ten years are quite rare! In retrospect we must rate FORTRAN as a successful coding technique, but with very few effective aids to conception, aids which are now so urgently needed that time has come to consider it out of date. The sooner we can forget that FORTRAN has ever existed, the better, for as a vehicle of thought it is no longer adequate: it wastes our brainpower, is too risky and therefore too expensive to use. FORTRAN’s tragic fate has been its wide acceptance, mentally chaining thousands and thousands of programmers to our past mistakes. I pray daily that more of my fellow-programmers may find the means of freeing themselves from the curse of compatibility."
- brundolf 6y agoI don't think any language that could ever be invented could be described as leaving programming students "mentally mutilated beyond hope of regeneration", no matter how bad it is. So either he was being hyperbolic (and the sarcasm was lost on me), or he was being shockingly dogmatic. It's the kind of ranting you do with your colleagues in a pub after-hours, not something you publish in a professional context and frame as "unpleasant truths", as if they've been proven through scientific measurement.
- IceCreamJonsey 6y agoIf you're used to exclusively programming with line numbers and you're a kid, sure, it might take a little bit of time and instruction to comprehend that line numbers aren't necessary. But from what he wrote it just sounds like this guy is whining about (when faced with students like this) having to actually do his job.
- Jtsummers 6y agoFortran and BASIC at the time were, in many ways, the antithesis to his ideas of what a programming language should be. They did not permit recursion (direct or indirect). Almost by design they encouraged spaghetti code (the thing Structured Programming was meant to work against). They encouraged (or required) global state. They discouraged modularity. They were effective languages (in the sense that people got stuff done in them), but they were poor languages when compared to the capabilities of their contemporaries.
- GoblinSlayer 6y agoI didn't have an impression that line numbers were important. Most of the time they did nothing and were unwieldy to maintain, they were more nuisance than anything else.
- ThrowawayR2 6y agoTenured professors, particularly of EWD's stature, get a lot of license to say what they want. I can certainly a few of my instructors who were rather colorful in a variety of ways.
- User23 6y agoI disagree and I believe most developers would agree that it would have been a far better use of time to learn 6502 assembly than Apple BASIC, at least if one's goal was to actually learn how to program computers. To this day if I saw 6502 assembly on a resume I'd be intrigued and if I saw BASIC I'd view it as a yellow flag.
- brundolf 6y agoThen you say "There are better options than BASIC for teaching new programmers." That's not what was written. I've read countless anecdotes from perfectly capable programmers who not only learned, but first discovered their interest in the field, via BASIC. No language "mentally mutilates programmers beyond hope of regeneration". And BASIC probably isn't even the worst one for learning purposes.
- User23 6y agoHe calls out BASIC specifically because it was ubiquitous and often the only option on the machines novices would have available at the time. It logically follows that most programmers of that era, capable or otherwise, started on BASIC. Since he’s not here to tell us, I can only assume Dijkstra met the occasional exceptional individual who began learning to program in a more mathematically rigorous language during that time and was left with a vastly more favorable impression. Remember, Dijkstra was a professor and he was an expert on teaching programming. He would have far more experience with the effect he claims than I do. I hazard to guess that is true with respect to you too. And yes he’s obviously engaging in rhetorical hyperbole in the text you quote.
- ThrowawayR2 6y ago> "He calls out BASIC specifically because it was ubiquitous and often the only option on the machines novices would have available at the time." EWD's quote is from 1975 which is just barely the start of the microcomputer era (the Altair 8800 came out in '75 and the Apple II in '77), so he's not referring to those. Most people writing programs would have had access to mainframes and therefore had access to multiple language interpreters and compilers I would think.
- madhadron 6y agoThe context of this EWD is somewhat lost to history, because Dijkstra's point of view in many cases won so thoroughly that we cannot conceive of what he was describing. The BASIC he is describing had no call stack, nothing that would resemble a function in today's languages. FORTRAN at the time handed masses of state around in global variables and the latest version had just added subroutines and functions. This is after ALGOL 60 had established the model that we all take for granted today. I think the bulk of practitioners today would absolutely agree with him.
- sevensor 6y agoBack in grad school, I had the pleasure of working with some very old FORTRAN. Written conservatively using a few bits of FORTRAN 77, but mainly in a FORTRAN 66 style. The control structures I found in there would make you go crosseyed. At one point, there was a jump that took you from outside a loop to the middle of the body of the loop. Today's no-longer-all-caps Fortran manages to elude EWD's criticism by not being that language any longer. You have to use a lot of obscure compiler flags even to make the old stuff compile.
- qsort 6y agoAs a massive fan of Dijkstra myself, true but up to a point. About programming languages I don't think there's any question he was right. Sometimes we agree with him even without realizing it, for example, the original argument of GOTO considered harmful was that GOTO statements decreased "linearity" by having the control flow jump to random places. The recent trend in mainstream PLs to adopt functional-style control structures (JS array methods, Java streams, etc.) is predicated on the exact same rationale. I'm also in broad agreement on his stance about natural language being just flat out wrong in the context of computing. But the man made an exorbitant amount of claims, many of which are just provably wrong. The bits about BASIC and COBOL are particularly egregious examples of his at times cavalier attitude. After all, arrogance is measured in nano-Dijkstras.
- andi999 6y agoThe goto thing is one of my pet peeve, somehow it caught on, maybe it made people feel good so they can look down on others. There is basically 2 arguments against it: Knuths article arguing for goto (read it if you havent), and the observation that gotos and state machines (which are considered best practices) are basically equivalent (just convert the goto labels to your states).
- dkarl 6y agoEverything Dijkstra says makes sense if you believe that computing cannot scale without correctness. He was wrong about that one thing, and to be fair to him, it's still a little amazing in retrospect, even when we can look back over the decades of history through which we've created a society dependent on vast, unimaginably complex, world-spanning computing systems built out of pieces that are virtually all broken. And it's not like he was a lone crank railing against the 99% who were moving forward with a well-founded idea of how computing could scale indefinitely by composing incorrect programs. Just like today, 99% of programming, including programming for government programs and vital infrastructure, was done by people who were only hoping to make their own projects succeed well enough for the next six months to three years. I'm sure there were brilliant people who made intelligent arguments against the need for correctness, but their arguments didn't carry the day. Complacency and short-term thinking did. In that context, Dijkstra's pessimism and his use of harsh, attention-getting language makes a lot of sense. How many people at the time really understood that in 2020 every part of our civilization would depend on code compiled by compilers with bugs, linked with libraries with bugs, in virtual machines with bugs, on operating systems with bugs, on CPUs with bugs in their microcode, and yet it would still all mostly work?
- galaxyLogic 6y agoGood points. I think a way of looking at it is that much of software development we do today is about communication, not engineering. Think of web-sites they are all about communicating something. And in a sense when you write a program you do so to communicate with the computer. Of course there are critical software engineering projects as well, Boeing MAX comes to mind.
- munificent 6y ago> if you believe that computing cannot scale without correctness. He was wrong about that one thing, and to be fair to him, it's still a little amazing in retrospect, That is clearly wrong if one is willing to take a moment to stop gazing at the wonder of pure mathematics and look at the outside world. There is no notion of "correctness" for the pyramids of Egypt, the dykes of the Netherlands, Milan Cathedral, or the world economy and yet those huge-scale systems all function. > Dijkstra's pessimism and his use of harsh, attention-getting language makes a lot of sense. It makes sense in terms of Dijkstra's personality, but it makes no logical sense. If you believe mathematical correctness is such a valuable principle, then you should be able to leverage that same principle in one's own arguments. The fact that Dijkstra couldn't dispassionately prove that correctness was vital and had to resort to emotionally-loaded weasel words undermines his own claim.
- Kednicma 6y agoSome of these have aged so perfectly that I only need substitute a few letters: > Python —"the infantile disorder"—, by now nearly 30 years old, is hopelessly inadequate for whatever computer application you have in mind today: it is now too clumsy, too risky, and too expensive to use. > It is practically impossible to teach good programming to students that have had a prior exposure to JS: as potential programmers they are mentally mutilated beyond hope of regeneration. > The use of Java cripples the mind; its teaching should, therefore, be regarded as a criminal offence. The quotes about languages were always controversial, weren't they? But it's clear now in retrospect what Dijkstra was complaining about. He found FORTRAN to trick people into thinking that programming was merely about specifying arithmetic operations in a certain order, considered BASIC to require mental models which rendered folks memetically blind to actual machine behaviors, and thought COBOL tried to be legible to management but ended up being confusing to everybody. > Many companies that have made themselves dependent on AWS-equipment (and in doing so have sold their soul to the devil) will collapse under the sheer weight of the unmastered complexity of their data processing systems. Yep. > In the good old days physicists repeated each other's experiments, just to be sure. Today they stick to Python, so that they can share each other's programs, bugs included. Reproducibility is a real problem, and sharing code is just the first step. It's an embarrassment to physics and mathematics that we don't have a single holistic repository of algorithms, but have to rebuild everything from scratch every time. (Perlis would tell Dijkstra that this is an inevitable facet of computing, and Dijkstra would reply that Perlis is too accepting of humanity's tendency to avoid effort.) > You would rather that I had not disturbed you by sending you this. Heh, yeah, let's see what the comment section is like.
- qntty 6y agoWhat modern language would Dijkstra approve of?
- User23 6y agoThere are so many languages available today that I'm sure there are plenty he would have approved of. For example, I think he might have appreciated Zig. If you read his work it's pretty easy to see his top priority is managing complexity and limiting surprise.
- skrebbel 6y agoHe wrote this in 1975, dissing most of the popular programming languages of the time. Does anyone know which language Dijkstra didn't think was a mess? (and please don't say GCL, his own unrunnable toy language) I mean, if FORTRAN is a mess, then isn't ALGOL too? Is anyone here old enough to remember?
- jolux 6y agoAlgol is quite different from Fortran.
- AnimalMuppet 6y agoIf I understand correctly, ALGOL had better ways of structuring code into functions than FORTRAN did. This let ALGOL do what eventually was called "structured programming", and FORTRAN do what was called "plate of spaghetti" programming. This is not the same as saying that EWD thought that ALGOL was good...
- User23 6y agoI imagine he had at least some fondness for Algol 60 since he is co-credited with writing the first compiler for it.
- AnimalMuppet 6y agoThat might give you fondness. Or disgust. In his case, I have no data about which one won.
- cafard 6y agoIt is unfortunate the insult comic aspect is so prominent in how people remember Dijkstra.
- 082349872349872 6y agoThankfully URL surgery into this archive allows people who want to remember more than a soundbite to do so.
- dang 6y agoIf curious see also how they hurt in 2012 https://news.ycombinator.com/item?id=4926615 https://news.ycombinator.com/item?id=4926615 and 2011 https://news.ycombinator.com/item?id=2279260 https://news.ycombinator.com/item?id=2279260 Smaller threads: 2014 https://news.ycombinator.com/item?id=7311078 https://news.ycombinator.com/item?id=7311078 2011 https://news.ycombinator.com/item?id=2283113 https://news.ycombinator.com/item?id=2283113
- theresa45 6y agoLet me share this on here cuz it might benefit someone going through hard times in his or her relationship. I was going through terrible times with my partner. I suspected he was cheating and I needed proof of this to back my claims. I couldn’t continue with this. All I wanted was to be sure of what was going on before I make any decision. I don’t make blind conclusions; I always want to see the proof for myself. I took the pain of searching for a professional IT expert who can help me spy and track all communication applications on his phone ( WhatsApp,Text messages, call logs and email). I was able to meet an amazing hacker named Webhubghost (@) gmaiilcom his hack services was professionally executed. All the hack was done remotely. He didn’t need physical access to the phone before it was hacked. Under 6 hours, the hack was done. Between these 6 hours, I was given updates about the progress of the hack work. This gave me rest of mind; it was very easy to trust his work. You can reach out to him at Webhubghost (@) gmaiilcom If you are interested in any of his services which ranges from phone hacking to social media account hacking, he will definitely deliver a perfect and swift service for you. I recommend Ben as the best option now because he is fast and reliable. I promised him to share his reputation across all online platforms for getting this done for me at last cause his services are untraceable and efficient not like those fakers I met previously.
- theresa45 6y agoNeed help on how to track and catch a cheating spouse. Write Webhubghost (@) gmailcom for help. He offers other hacking services