Dijkstra's interview on Dutch TV (2000)
pncnmnp.github.io
pncnmnp.github.io
The Dutch language quote as displayed: "We mogen niet uit nonchalance fouten in een programma aanbrengen. Dat moeten we systematisch en met zorg doen.".
Feel free to run that through your favorite translator.
The subtitles: "We should not introduce errors through sloppiness but systematically keep them out."
The translator missed a very dry and very Dijkstra joke.
"We shouldn't add errors to software out of negligence. They should be added systematically and carefully."
“That must we systematically and with care do”.
That's pretty funny, too bad.
“We must not introduce errors into a program out of carelessness. We must do it systematically and with care.”
Dijkstra’s statement appears to be a bit of dry humor. He’s known for his wit and often used irony in his statements. The idea of deliberately and carefully introducing errors into a program is clearly absurd, which is the joke. It’s his way of emphasizing the importance of being meticulous and systematic in programming to avoid errors.
I read the message as: "We must not carelessly introduce errors to a program, but rather systematically and with care"
The joke being that we introduce the errors systematically and with care.
I'll note the biggest reason why Dutch may seem somewhat closer than modern German is that modern German is mostly High (Southern) German. Low German common in the Northern parts of Germany before lies closer to the continuum between Dutch and the Scandinavian languages (for example it didn't got through the same consonant shift and still has Dag for day/dag instead of Tag).
There are many words in Dutch that you might recognize as similar to Norwegian that you might be marginally more likely to fail to recognise in modern German because the spelling is slightly more different.
Absolutely not. South german is for me Badisch, Schwäbisch, Bayrisch und Alemannisch (Badian, Swabian, Bavarian and Alemmannian --- similar to Swabian, but with lots of differences, e.g. we have "gwä-Schwaben" und "xsi-Schwaben".
But perhaps my other understanding stems from the fact the "Hochdeutsch" (high german) can mean different things. E.g. the german wikipedia has a disambiguation page https://de.wikipedia.org/wiki/Hochdeutsch for it.
I interpreted it to be the "normal" german we all speak if we don't speak a german dialect. Or, in other words, the first link of that disambiguation page: standard german. And that is a result of some "norming process", initiated mostly by the brothers Grimm, i.E. they wrote the first generally accepted german dictionary. Generally we can say that this process started in the 17th century, with it's high in the 18th. So it's quite modern, long after dialects formed.
And they didn't life and work in southern Germany, but quite in the center, the area between Hanau and Göttingen. If we look for dialects there, when we see that they are influenced by frankonian and saxonian dialect --- not the modern day Saxonia, but the historical one. The border between both empires goes right through the working area of the Grimms, e.g. the german town "Frankfurt" has a "Sachsenhausen" at the over side of the river. Or north of Marburg you have "Frankenberg" and "Frankenau" but also "Sachsenberg" and another "Sachsenhausen". These old kingdoms created language differences ... but they have nothing to do with southern german dialects / languages.
However, the various "Plattdeutsch" dialects like Plattduitsk or Frisian are totally different, here you're correct. They are categorized usually as "lower german" (Platt => flat => lower), North See Germanic, West Germanic, Germanic, Indogermanic.
I'm certainly willing to accept that there may well be significant aspects of standard German that incorporates more central and Northern dialects and deviates from the southern Hochdeutsch dialects in ways I have no idea about. I'm sure you know far better than me about that.
But the most relevant differences in the context of my comment was the High German consonant shift, the effects of which is one (of several, sure) big change separating Standard German from the other Germanic languages, and which was mostly firmly happening further South than Plattdeutsch/Niederdeutsch/Low German.
In that respect at least, standard German orthography is closer to that of South/Hochdeutsch, and it has separated German further from the rest of the Germanic languages.
E.g. compare:
* Day: dag (Scandinavian, Dutch), Dag (low German languages), Tag Standard and High German.
* Ship: skip (Norwegian, Swedish) , skib (Danish), Skip/Schip/Schipp/Schepp (various lower German variants, Frisian), Schiff (Standard and High German)
* Apple: eple, Appel, vs. Apfel
* two: to (Norwegian, Danish, två (Swedish, Norwegian dialects), twee (Dutch, lower German), zwei (Standard and High German)
E.g. like low German and most of the other West and North Germanic languages, Dutch did not go through the High German Consonant Shift, but modern standard German "imported" that.
That makes modern German a lot harder to read for Scandinavians in ways that Dutch simply isn't.
I often find it easier to read Dutch despite never having learnt it than I find reading German despite having had three years of German lessons in school.
And if you start digging into the shared vocabulary between Dutch and the Scandinavian languages, you'll find a whole lot of those words are words that have retained far more similarity to the low German dialects than the Scandinavian languages have to standard German.
See also my other comment on this, with some comparisons.
Note that this does also not necessarily go both ways - I'm totally willing to accept that you might find high German more similar than low German from your perspective because of different subsets of shared vocabulary or structure, for example.
That said, I find Dutch much, much easier to read.
EDIT:
"We mogen niet uit nonchalance fouten in een programma aanbrengen. Dat moeten we systematisch en met zorg doen.".
First sentence
We = vi
mogen = må
niet = ikke (from knowing German)
nonchalance = nonsjalant = skjødesløs = slurvete
in = i
een = en
programma = program
aanbrengen = anbringe = bringe = innføre
The only word I didn't really recognize was "fouten".
So, roughly that reads as "vi må ikke på slurvete vis (something) til et program innføre", which isn't really how we structure sentences in Norway.
But it gives enough context and clues, that we shouldn't introduce something negative to a program through carelessness / sloppines.
Second sentence
Dat = da
moten = må
we = vi
systematich = systematisk
en = guessed either "en" or "and", where the latter made more sense.
med = med
zorg = I guessed "sorg", but turns out it meant "omhu".
doen = gjøre
Second sentence first read "Det må vi systematisk og med [noen] gjøre". Whic, again, isn't a typical Norwegian structured.
"Det må vi gjøre systematisk og med omhu".
That is at least how I read the original text. Some words are difficult because they don't seem to be loanwords from neither English or German.
>The only word I didn't really recognize was "fouten".
It might be easiest to map it to the word "fault" in English.
A a Dutch guy, I have the same with Norwegian, Swedish and maybe Danish: I can skim the headlines in newspapers and figure out what it's about.
Also: most Norwegians have very little accent when speaking English, unless they're in some kind of satiric Viking series.
In this day and age we live in a kind of stupor that we have to keep the wheel of economy spinning no matter what and that as long as someone is paying we have to keep sh*tting lines of code for perpetually late projects. It's like we're inefficient on purpose. Look at the shitshow that the SCRUM method is for instance. We are purposefully distancing software development from any kind of rigorous method, it's a real tragedy.
It will work beautifully though.
Another place these semantics arise is in talk about probability and possibility, wherein the possible can have zero probability (e.g. any specific value in a continuous probability distribution), but the impossible cannot have a zero probability because by definition it is outside the set of "possible events" (measure theoretically). Both make little intuitive sense.
Scrum is not intended to remove rigour from development. It acknowledges that people (the client) have no clue what they want (they're no Mozart), and that it's up to the development mean to help them figure it out. Ideally converging on something that the client wants, and works well.
Sure, plenty of projects fail for a variety of reasons. And sure, scrum (or agile in general) isn't perfect. But it's the best tool in our toolbox at the moment.
You, and all those other folks who like to tilt at the scrum windmill, are more than welcome to propose something that works as well as (or better than) scrum without the downsides. But so far, it's been crickets.
IMO there are three big issues: clients don't understand software development, and management doesn't understand software development, and software developers neither understand clients nor management.
It's not that scrum is not perfect, scrum is an absolute garbage that unfortunately today fits very well with the micromanaging hunger of managers, no method is better than scrum.
That's a sad view. Reminds me of a couple past managers I've had who thought that software developers were assembly line workers.
US culture note: The cultural expectation for assembly line workers here is that they "shut up and color", it's the job of the managers and engineers to do the thinking. That is, even if an assembly line worker can see that something is wrong, it's not their job to point it out or fix it. They are disempowered in this culture.
What's sad about your view is you similarly want to disempower developers. You don't want them to have input into what they're making, you just want them to shut up and code. According to you the specification is, what, always given to the developers without their input? So if the specification is non-viable they should just accept it and sit in their corners making nonsense?
Scrum nowadays is essentially a tool for micromanagement, that's why managers love it and developers hate it. Dailys are completely useless and breaking the development of complex projects in 2 weeks sprints is outright harmful.
Sigh. Of course people aren't sure about what a final product should look like. It's easy enough for something small, but once something gets big, how the hell are people expected to know how everything will work up front?
> Scrum nowadays is essentially a tool for micromanagement, that's why managers love it and developers hate it. Dailys are completely useless and breaking the development of complex projects in 2 weeks sprints is outright harmful.
Sure, some managers love scrum, and some developers hate it. But it's not a tool for micromanagent. It's a tool for course corrections in the face of reality.
I personally find dailies to be very useful, especially in a distributed team. It's an efficient way of figuring out what's up and making sure all noses are pointed in the same direction.
No managers are involved in any of my day-to-day scrum ceremonies.
If your manager hits you with a hammer, you might want to consider that your manager is an arse instead of blaming the hammer. When a tool doesn't work for you, sometimes it's not the tool that's to blame, but the larger context in which the tool is being used.
Really? And where does this specification come from? Presumably from a bunch of analysts? Who then write a big fat document? Which is then handed over to developers, who then groan because it is incomplete, unclear, unusable, or unrealistic? This sounds an awful lot like the waterfall of yore which turned out not to be all that great.
> he or she should not be there to entertain clients in a game of creating a product
The client tends to pay people with the hopes of getting a working product. It should absolutely be the developer's job to ensure that they get it. Even if that means -- shudder at the thought -- talking to them.
https://www.cs.utexas.edu/users/EWD/memorial/newsletterartic...
> The courses that Edsger taught regularly all had the title Capita Selecta (selected topics). Prior to his retirement in 1999, the offering alternated each semester between the graduate and undergraduate level. Taking Edsger’s course was an intimate experience and a unique learning opportunity. The class enrollment was limited to 20 or so students, which allowed a rewarding level of interaction between instructor and students. The main form of assessment in his course (in addition to the informal impressions he formed throughout the semester) was a two-hour oral examination, held either in his office or at his home. During this individual session, Professor Dijkstra would present the (usually nervous) student with a problem or two. The student’s task was to develop a satisfactory argument during the allotted time, writing the solution on the blackboard. Afterward, the student would generally leave the room with a warm glow of accomplishment thanks to Edsger’s gentle prodding and questioning during the session.
I was wondering if anyone on HN took his course and could share their experience?
Dijkstra asked me to sit in on one final oral exam which he was expecting to be tricky. It was a very intimidating atmosphere for the student.
My first programming teacher was back in HS, some 25 years ago. The man was a retired software engineer in his 60s. He really pushed that train of thought - to "finish" the code in your mind, on paper, etc. before actually writing it and hitting compile / run.
I never took it literally in the sense that you need to think out the entire program, but rather that when writing functions and more overall logic, it is good practice to have it all worked out - rather than just write as you go, and iterate. The latter part is very easy to do these days, as running code is more or less instant...
The only way to get anything done at all was to have the program more or less complete in your head otherwise you'd be busy for months on a simple problem. Exploratory programming? Forget about it...
But if the real need arose and you had no other alternatives suddenly the impossible would be possible.
> There are very different programming styles. I tend to see them as Mozart versus Beethoven. When Mozart started to write, the composition was finished. He wrote the manuscript in one go. In beautiful handwriting, too. Beethoven was a doubter and a struggler, who started writing before he finished the composition and then glued corrections onto the page.
"So then you get these version numbers, even with decimals, version 2.6 or 2.7. That's nonsense. While version 1 should have been the finished product."
So I think the nuance you are trying to make is unsupported. He did mean: think it through once, write it out once, version 1. Done.
Writing prose is similar. it might seem like you don't want to waste time outlining and sketching out ideas, but it's usually easier to assemble something useful from an outline than it is to try to work with a disjointed stream of consciousness.
You might get to a point of familiarity and/or mastery where you can do a lot of that work in your head. But that's very different from not doing that work at all.
Alan Kay said it best
"I don't know how many of you have ever met Dijkstra, but you probably know that arrogance in computer science is measured in nano-Dijkstras."
They don't get there by using a lot of formal methods or thinking deeply. They get there by testing the shit out of everything and static analysis tools (which have gotten a ton better since I started in the industry). Some of the programmers I've had to clean up after were mediocre, at best (though others were stellar). The main reason their systems don't kill people is the testers standing between you and their original code.
MBSE has been picking up, and it's a good thing. It's not as big as it should be or always used effectively, but it's helping.
Very ironic to have such a take when the very industry brought up is arguably the one that brought the most innovation of the post-war era. From metal alloys to electronics, plastics, composits, wireless transmission, precision machining, quality standards and traceability.
The bane of my existence. Companies like these get a decade long contract with governments and large enterprises (typically outside the "tech" space) to maintain a system, and at the end it's often worse than when they started the contract. Grifters, all of them.
The worst offenders are the defense contractors. They know they don't have to work, sunk cost fallacy is strong in government contracting.
There are certainly some contractors who aren't as deep into the grifting, and a small handful who really are sincere, earnest, and successful, but they're a rare breed. The big contractors (Raytheon, LM, NG, Boeing) keep eating up the little ones, and the outcome is about what you'd expect from these conglomerates.
If they ever needed to compete on price, they just wouldn’t. Usually their competitors wouldn’t either, there were only a few.
He was complaining of the watering down of curricula in Netherlander unis...
He moved to TX in '84 due to the infantilization of students (by the Dutch). We now have some high school teachers who say they will not issue Ds and Fs and instead will give incompletes only... I'm afraid we have eclipsed the Dutch.
Seems fine to me. Grades have always been totally arbitrarily. Just look at test scores instead
Does anyone here think China is going to water down their education and risk their competitiveness in hard sciences and maths?
> why are they inflating As
Because some people still think that grades matter
> The A kid knows a whole lot more than the kid with Ds
Sure but you can figure that out with just one leetcode question. After taking LC performance into account, there are ~0 bits of information left in grades