Skip to content
0:00 / 0:00

#handmadehero#caseymuratori#oop

Handmade Hero | Getting rid of the OOP mindset

vexe

2.9K subscribers • 1 video on Hallway

YouTube
  • Recommended by 2 people: 2 on Hacker News.
  • A classic. People kept recommending it from 2018 to 2021.
  • Presented by Casey Muratori
  • An opinion. It argues one side of a question engineers disagree on.

Intermediate. Assumes working knowledge.

167K views9 years ago2 recommendations

Software designProgramming languagesObject-oriented designData-oriented designDesign patterns

Casey Muratori explains why he rejects object-oriented programming and how to transition to a simpler, data-oriented mindset.

Day 134 QA youtu.be/AdscwVnyaQw COP: mollyrocket.com/casey/stream_0019.html

Why it's here

2 people recommend this

What people say. Engineers frequently share this clip as a compelling critique of object-oriented programming and an introduction to alternative design mindsets.

Reedxon Hacker News • Recommends

On “Ask HN: What is your best advice for a junior software developer?”

Here's an explanation from Casey Muratori: link to this video See also Mike Acton (Engine Director @ Insomniac Games): link

Reedxon Hacker News • Recommends

On “OOP Is Dead, Long Live OOP”

Some other takes: Casey Muratori (Handmade Hero) on why OOP is bad and how to get rid of that mindset - link to this video Mike Acton (Engine Director @ Insomniac Games) - link

kkonceviciuson Hacker News • Recommends

On “Ask HN: Programming talks that made something click for you?”

Not so much talk as a rant. "Getting rid of the OOP mindset" ( link to this video ) And accompanying article "Semantic Compression" : link

u/Bekwnnin r/ProgrammingLanguages • Mentions

On “Explain Like I...don't have a degree: how does non-object oriented programming works?”

I'll take a shot with my understanding. In the words of Casey Muratori (who is a really smart dude), it's not the "object" part of the word that's the issue, it's the whole phrase, "object-*oriented*" that's the problem. Data gets bundled all the time, it has been since before OOP was a concept, and you might have methods which operate on that bundled data. C++ isn't really an object-*oriented* language. It's "C with objects", it's a multi-paradigm language that supports object-*oriented* programming. Other languages like Java or C# are object-*oriented* languages because they don't particularly have or well-support a non-object-oriented way of doing things. A few signs of object orien…

mananaysiempreon Hacker News • Mentions

On “Microservices Are a Big Ball of Mud”

If that’s indeed the most useful general thing that can be said about this question, then it means the microservices crowd has won , at least insofar as it deserved to win. The point is not that everything needs to be a micro-est possible service, the point is that we all now have applications built out of loosely-coupled services as a primitive in our reasoning toolbox. I think very similar things when I hear Casey Muratori’s opinions on OOP1, which he titled “getting rid of the OOP mindset” but I’d summarize as “absolutely do make an object or two if that fits your problem domain, but remember that it doesn’t have to and use your judgment”: that’s what OOP winning feels like , from the i…

u/BigOnLognin r/compsci • Mentions

On “DCIC: A new book for teaching beginners programming and computer science”

I haven't looked at the book, but I love this concept. Casey Muratori freed my mind on the subject. OOP is terrible. So many of the smartest people in the field have come to this conclusion on their own over the years: Mike Acton at CPP Con 2014 Stoyan Nikolov at CPP Con 2018 Mike Acton and Casey Muratori Discussing justifications for DOD Jonathan Blow (he gives yet more resources on the subject in his talk).

u/Norphesiusin r/C_Programming • Mentions

On “Looking for coding style advice.”

The context of "OOP is bad for game dev" comes from two places: OOP being considered bad design in general, and high level languages that encourage OOP not being ideal for high performance development (i.e. games). So, if you are using OOP, but dodge those two points, aka your code is manageable and performant, then you're fine. If you really want to try and learn a non-OOP mindset, at least as a learning exercise, I'd recommend either looking into Casey Muratori or Mike Acton's talks on Data Oriented Design.

u/ewmailingin r/C_Programming • Mentions

On “A few too many questions about choosing C”

One more link which might be useful to you. This is Casey Muratori during a Q&A session of Handmade Hero being asked about how to get rid of the OOP mindset. Handmade Hero | Getting rid of the OOP mindset A minor digression, his point about the crux of the problem being "orienting the thinking around the objects, not the functions", reminded me of the humorous satire, Execution in the Kingdom of Nouns, where you learn about a place where you can't use verbs, the Kingdom of Javaland. Casey Muratori's 'Compression Oriented Programming' is also something worth familiarizing yourself with if you haven't already. *Edit: typos*

u/M_e_l_v_i_nin r/C_Programming • Mentions

On “PLEASE GUIDE”

It doesn't really matter where you start, it matters where you end up. I personally can say that had I know from the start what I now consider absolutely important fundamental knowledge, I should have started with assembly and just write little bit of assembly to get a feel for what it is and let the experience of telling the cpu to do help me build a good mental model of what it is I have control over and how I can control the cpu and truly comprehend that at the end of the day, all you're doing is generating assembly instructions for the cpu to execute. I think going to C after you've experienced assembly will give you a good understanding of what benefits the language provides and you'…

u/rivenjgin r/typescript • Mentions

On “TypeScript class vs function exports”

Object-Oriented Programming is Bad link to this video https://medium.com/@brianwill/object-oriented-programming-a-personal-disaster-1b044c2383ab Handmade Hero | Getting rid of the OOP mindset link to this video https://www.computerenhance.com/p/clean-code-horrible-performance https://www.computerenhance.com/p/performance-excuses-debunked https://github.com/cmuratori/misc/blob/main/cleancodeqa.md https://github.com/cmuratori/misc/blob/main/cleancodeqa-2.md - https://naildrivin5.com/blog/2019/11/11/solid-is-not-solid-rexamining-the-single-responsibility-principle.html https://naildrivin5.com/blog/2019/11/14/open-closed-principle-is-confusing-and-well-wrong.html https://naildrivin…