22 ms·
Hmm, time will tell on this rivalry. OOP may not be as harmful as GOTO, but it does seem to be falling out of favor. Dijkstras point of view may be as vindica
by photonthug 3y ago
Hmm, time will tell on this rivalry. OOP may not be as harmful as GOTO, but it does seem to be falling out of favor. Dijkstras point of view may be as vindicated with one as with the other.
- rfrey 3y agoBeing correct or incorrect is orthogonal to arrogance.
- photonthug 3y agoI agree, but this can also be tactical since for whatever reason it's rare in certain cultures that quiet humility is listened to. Also confidence or bluntness may be easily mistaken for arrogance. IDK about Kay but lots of Americans who think they like a "straight shooter" are still unprepared for a Dutch-style discussion
- akira2501 3y ago> it's rare in certain cultures that quiet humility is listened to. There's the old adage that you "can lead a horse to water but you can't make him drink." I wonder what those who give up on humility think they're actually gaining?
- tialaramex 3y agoNote that Dijkstra's letter is about the "go-to statement" a then common but now very rare language feature which is akin to the machine code absolute jump - whatever you were doing, now you're doing this with no context. BASICs are perhaps the language HN readers are most likely to have seen which (in some cases) have the GOTO feature Dijkstra wrote the letter about, if you've seen goto in C for example, or C++, that resembles the go-to statement superficially, but in practice it's not very dangerous because it's constrained. Suppose my C++ f() recursive function adds a "goto" - it's not allowed to jump into a different function g(), it's not even allowed to jump into a different iteration of the same function f(), it's only allowed to change which part of the current iteration of the current function happens next, and it can't skip the destruction or initialization of variables, or other book keeping.
- kevin_thibedeau 3y agoC/C++ has the dangerous goto under the guise of longjmp().
- tialaramex 3y agoAlthough longjmp is more dangerous than C's goto, it's not that close to what Dijkstra was warning about. A longjmp is only allowed to move execution back to somewhere it was previously, and in the process all the appropriate book keeping is done, it can't send you somewhere you've never been or evade initialization/ destruction (at least any more so than these languages manage by themselves).
- mayoff 3y agoMichael Snoyman has a great talk about this, “FP is the new OOP”. He argues that some major concepts that OOP popularized are now mainstream and accepted, and OOP-bashing ignores those concepts and just acts like OOP only means the bad parts. https://youtu.be/to8ISIQjETk https://youtu.be/to8ISIQjETk