Live data from Hacker News

The Big Oops: Anatomy of a Thirty-Five-Year Mistake [video]

youtube.com

21–30 of 97 posts

Re: The Big Oops: Anatomy of a Thirty-Five-Year Mistake [video]

#21
post #13
post #12

I found this talk to be great. It goes through the history of OOP and how some of the ideas for the more modern ECS were embedded in the culture at the formation of OOP in the 1960s to 1980s but somehow weren't adopted. It was pretty clear, even 20 years ago, that OOP had major problems in terms of what Casey Muratori now calls "hierarchical encapsulation" of problems. One thing that really jumped out at me was his q…

> I'm not sure about language design or system architecture but this is almost universally not true for any mathematical or algorithmic pursuit. I don't agree. While starting with the simplest case and expanding out is a valid problem-solving technique, it is also often the case in mathematics that we approach a problem by solving a more general problem and getting our solution as a special case. It's a bit paradoxic…

> ... it is also often the case in mathematics that we approach a problem by solving a more general problem and getting our solution as a special case.

This is a really good point. LLL and "Feynman's" integral trick come to mind. There are many others.

I got it in my head that this doesn't apply to NP-complete problems so should be discounted. When trying to "solve" NP-complete problems, the usual tactic is to restrict the problem domain into something tractable and then try to branch out other regions of applicability.

> Those are precisely the kind of areas where it's really important that you consider all the possible things you might want to do, and make sure you're not making some false assumption that will massively screw you over at some later date.

I will say that abstraction is its own type of optimization and generalization like this shouldn't be done without some understanding of the problem domain. My guess is that we're in agreement about this point and the talk essentially makes this argument explicitly.

Re: The Big Oops: Anatomy of a Thirty-Five-Year Mistake [video]

#22
One thing between 1960s Sutherland and 1990s Looking Glass he left out I think was column-oriented databases (70s and 80s).

That might have been important for the performance aspects that drove the resurgence in ECS, though I know he's focused more in this talk on how ECS also improves the structure for understanding and implementing complex systems: in the 70s and early 80s memory latency probably hadn't begun diverging from instruction rate to such an extreme degree, but in disks it was always a big issue.

Also would like to hear more about Thinglab and if it had some good stuff to it.

Re: The Big Oops: Anatomy of a Thirty-Five-Year Mistake [video]

#23
This video contains many serious misrepresentations. For example, it makes a claim that Alan Kay only started talking about message-passing only in 2003 and that it was a kind of backpedaling due the failures of the inheritance-based OOP model. That is a laughable claim. Kay had given detailed talks discussing issues of OOP, dynamic composition and message-passing in mid-80s. Some of those talks are on YouTube:

https://www.youtube.com/watch?v=QjJaFG63Hlo

Also, earlier versions of Smalltalk did not have inheritance. Kay talks about this is his 1993 article on the history of the language:

https://worrydream.com/EarlyHistoryOfSmalltalk/

Dismissing all of this as insignificant quips is ludicrous.

Re: The Big Oops: Anatomy of a Thirty-Five-Year Mistake [video]

#25
post #22

One thing between 1960s Sutherland and 1990s Looking Glass he left out I think was column-oriented databases (70s and 80s). That might have been important for the performance aspects that drove the resurgence in ECS, though I know he's focused more in this talk on how ECS also improves the structure for understanding and implementing complex systems: in the 70s and early 80s memory latency probably hadn't begun diver…

more about Thinglab

https://archive.esug.org/HistoricalDocuments/ThingLab/ThingL...

Re: The Big Oops: Anatomy of a Thirty-Five-Year Mistake [video]

#26

Earlier quoted context omitted.

If I get bored with life I'll rewatch and take notes, that was the main one that made me chuckle and stuck with me. It was details around Lisp and a couple other things that were outside his explicit research scope (he specifically researched C++, Smalltalk, and Simula per his blog). Like claiming that everything in Lisp was based on lists (even in 1960 that wasn't true). I'd just expect more from someone who takes 3…

> Whether it was made for that is immaterial This is in the talk, he explicitly says that its often brought up that "OOP is made for large teams" "you're not using it as intended" "its not made to model your domain hierarchy" etc etc. The first 30 minutes is his reaction to that, disproving it. Whether thats true or interesting is a different question, but its explicitly stated in the video, at the start, before he g…

> "OOP is made for large teams" "you're not using it as intended" "its not made to model your domain hierarchy"

Are there actual references for those quotes? Were they said by some kind-of expert or by a sales person or by cousin John?

Are they strawmen set-up to knock-down.

Re: The Big Oops: Anatomy of a Thirty-Five-Year Mistake [video]

#27
post #23

This video contains many serious misrepresentations. For example, it makes a claim that Alan Kay only started talking about message-passing only in 2003 and that it was a kind of backpedaling due the failures of the inheritance-based OOP model. That is a laughable claim. Kay had given detailed talks discussing issues of OOP, dynamic composition and message-passing in mid-80s. Some of those talks are on YouTube: https…

The dates are the dates of the sources, he says in the talk he wasn't going to try to infer the dates these ideas were invented. Also he barely talked about Alan Kay.

Re: The Big Oops: Anatomy of a Thirty-Five-Year Mistake [video]

#29
I had no idea Thief, one of my favourite games, was built with an ECS-like architecture. Two articles with more interesting details about Thief (I especially love its "temporal" CSG world model):

https://nothings.org/gamedev/thief_rendering.html

https://www.gamedeveloper.com/design/postmortem-i-thief-the-...

I skipped a fair chunk of the middle of this video as I really wanted to get to the Sketchpad discussion, which I found very valuable (starting around 1:10).

I think Casey was fairly balanced, and emphasized near the end of the talk that some of the things under the OOP umbrella aren't necessarily bad, just overused. For example, actors communicating with message passing could be a great way to model distributed systems. Just not, maybe, a game or editor. Along similar lines, I love this old post "reconstructing" OOP ideas with a much simpler take similar to what Casey advocates for:

https://gamedev.net/blogs/entry/2265481-oop-is-dead-long-liv...

But I of course enjoyed him calling out the absolutely dire state of OOP education/tutorials. I satirized this on my own blog ages ago:

https://crabmusket.net/how-i-learned-oop/

In that post I referenced Sandi Metz as an antidote to awful OOP education. I may just have to include Casey as well.

Re: The Big Oops: Anatomy of a Thirty-Five-Year Mistake [video]

#30
post #12

I found this talk to be great. It goes through the history of OOP and how some of the ideas for the more modern ECS were embedded in the culture at the formation of OOP in the 1960s to 1980s but somehow weren't adopted. It was pretty clear, even 20 years ago, that OOP had major problems in terms of what Casey Muratori now calls "hierarchical encapsulation" of problems. One thing that really jumped out at me was his q…

So, this is pretty difficult to test in a real-world environment, but I did a little LLM experiment. Two prompts, (A) "Implement a consensus algorithm for 3 nodes with 1 failure allowed." vs. (B) "Write a provably optimal distributed algorithm for Byzantine agreement in asynchronous networks with at least 1/3 malicious nodes". Prompt A generates a simple majority-vote approach and says "This code does not handle 'Byzantine' failures where nodes can act maliciously or send contradictory information." Prompt B generates "This is the simplified core consensus logic of the Practical Byzantine Fault Tolerance (PBFT) algorithm".

I would say, if you have to design a good consensus algorithm, PBFT is a much better starting point, and can indeed be scaled down. If you have to run something tomorrow, the majority-vote code probably runs as-is, but doesn't help you with the literature at all. It's essentially the iron triangle - good vs. cheap. In the talk the speaker was clearly aiming for quality above all else.

Post reply on HN