Live data from Hacker News

Edsger Dijkstra carried computer science on his shoulders (2020)

inference-review.com

181–190 of 229 posts

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#181
post #65

Earlier quoted context omitted.

Most real world problems don’t fit into neatly into hierarchical structures. OOP pushes you towards trying to model everything in the world an objects with strictly defined operations that can be performed on, where those actions are determined by the data type itself. You end up being forced to co-mingle your data structure design, with your data processing design. Which tends to be rather unhelpful. Keeping your da…

In OOP you can have data structures and algorithms separated. You can use composition over inheritance without issues. The fact that a language is strong typed and you get compilation errors if you forgot something is a big plus. OOP is fundamentally about no static variables.

That, as I have been told, is "object-based programming", not object-oriented programming.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#182
post #98

Earlier quoted context omitted.

Being correct or incorrect is orthogonal to arrogance.

I 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

> 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?

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#183
post #16

Dijkstra is a wonderful source of memorable quotes and hot takes from the early days of software. A sampling: > “The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.” (Dijkstra, 1972) > “The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.” (Dijkstra…

whats wrong with object oriented programming?

I can't speak for Dijkstra, but in my view it is mostly about how it is taught.

When you're learning OOP, you deal with questions like "is a Circle an Ellipse or is an Ellipse a Circle?" F'in' neither, actually. You end up "modelling" "business objects" in "code", leading to monstrosities like Hibernate.

In reality, you have the real-world domain and you have the in-the-computer domain, and trying to make one look like the other is a mistake. OOP is a dandy way of managing some forms of complexity, but it's not often an especially good way of looking at most problems, much less the only way.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#184
post #79

Earlier quoted context omitted.

don't conflate 'Objects' with 'Object Oriented Design', if you split your data Structures from you algos then your just using an OOP-language to do programming not doing OOP. strong typing has nothing to do with OOP. static variable are replaced by singletons and other similar in spirit objects. OOP today is a 'No true Scotsman' concept much like communism, agile, and other vague by design terms. You can't argue agai…

Aren't you then just attacking a programming style that nobody actually uses or advocates? One of the most influential books about OOP - "Design Patterns: Elements of Reusable Object-Oriented Software" - talks about composition, separating interface from implementation etc - not about hierarchies ( other than to prefer composition ).

Much of the Design Patterns phenomenon involves convincing Java to do things that are idiomatic in other languages.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#185

Earlier quoted context omitted.

There’s no other way to do it for this type of a brain. I know because I have the same type of brain. I spend 90% of my time formulating descriptions of the problem and the desired end state Hallucinating futures where the state of the world is in a state that I either wanted to be or that somebody’s asking me to build Once you know your final end state, then you need to evaluate the current state of the things that…

This is perhaps the most verbose and ridiculous way of saying "I think about how to solve the problem". It feels like a parody with the prompt of: how a person who scored 170 on an online IQ test would describe how their brain works.

It would be kinder to assume that "I think about how to solve the problem" doesn't capture the nuances of actually doing that thinking to the satisfaction of the commenter, and this is their attempt to articulate it to match their experience. The process of "understand the starting point, the desired end point, and identify the path between them" closely matches the way I approach problems. If you don't feel inclined to meet someone where they're at, you can say so without condescension.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#186

I recently realized, after talking to a friend of mine who studied Dijkstra's works, that for as much as he was interested in writing correct programs his "Structured Programming" approach makes absolutely zero guarantees on correctess or even verifiability. A program written in a structured way is not inherently more correct nor easier to automatically check for bugs.

On the other hand, a program written without structured programming is insanely hard to check for bugs, modify, or get anywhere near right in the first place.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#187
post #43

> "Whether written using a fountain pen or typewriter, Dijkstra’s technical reports were composed at a speed of around three words per minute. “The rest of the time,” he remarked, “is taken up by thinking.”9 For Dijkstra, writing and thinking blended into one activity. When preparing a new EWD, he always sought to produce the final version from the outset." > "He also never purchased a computer. Eventually, in the la…

I am rather autistic and this is how I think, toosies. 90-95% of my time working on a project is just sitting, staring into space, completely unaware of the world around me. I think it's because while you can "explore the field" with compute, as it were, the informational shapes of whatever the problem is at hand are always there, and usually they are _much_ more simple than people seem to let on, IMPO. I'm not reall…

You've described something extraordinarily similar to my own mental topology for processing problems. I'm also autistic, although I think our sensitivities differ somewhat.

I also try to (and mostly succeed at) hold a whole problem in my head at once. This made me fairly successful at architecting software systems with many moving parts, but it's an incredible drain on my energy, and I would sometimes find myself so exhausted I would go to sleep for hours (i.e. not a simple nap) in the middle of the day. I credit this ability for my current burnout, honestly! It's deeply satisfying to do, but maintaining it week after week amidst all the other responsibilities of my previous job (especially the interpersonal ones) was crippling.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#188
post #15
post #5

Earlier quoted context omitted.

The whole structured programming practically birthed the industry, so it’s hard to say he has less direct impact in the industry though.

It was controversial at the time. Dijkstra advocated "single entry, single exit" for each control block. Programs should be composed of such blocks. Makes for very neat flowcharts. Good for entry and exit conditions. Single entry wasn't that controversial. Single exit, though, means no "break", or "continue" for loops, and no early returns from functions. This forces a rather convoluted style. Try writing a loop of t…

The key point of structured programming is that you don't need any control structures other than sequential composition, a conditional construct, and a (typically while) loop construct.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#189
post #96
post #16

Dijkstra is a wonderful source of memorable quotes and hot takes from the early days of software. A sampling: > “The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.” (Dijkstra, 1972) > “The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.” (Dijkstra…

Half of his clever quotes are completely bonkers though and have been disproven by history. How many of you are proving your programs correct before entering them into the computer? Because that is the only correct way to program. And remember he disparaged Margaret Hamiltons software methodology. Sure, she helped put a man on the moon, but apparently she did it the wrong way . I suspect geeks like Dijkstra because h…

> How many of you are proving your programs correct before entering them into the computer?

Not enough of us, that's how many.

Also, if he said this back when the majority of programs were written in assembly I think it makes a lot more sense.

Re: Edsger Dijkstra carried computer science on his shoulders (2020)

#190

Earlier quoted context omitted.

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.

Note 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++, tha…

C/C++ has the dangerous goto under the guise of longjmp().
Post reply on HN