- The Brian Will collection:
2011 tutorial video:
Object-oriented programming (old version, watch new version instead) - YouTube
2011 tutorial video (rerecorded in 2012):
Object-Oriented Programming - YouTube
then the 2016 trilogy:
Object-Oriented Programming is Bad - YouTube
Object-Oriented Programming is Embarrassing: 4 Short Examples - YouTube
Object-Oriented Programming is Garbage: 3800 SLOC example - YouTube
- @SL5: Thanks.
- @SOTE: Yes, I liked the phrase 'compression-oriented' also.
- Thanks for your efforts, you've been investigating this issue quite thoroughly.
- The recent videos you added were all good choices. Thanks, not everyone is a good selector, a rare gift!
Why OOP inheritance sucks
The Problem With Object Oriented Programming
Component Design Pattern for Games
[Jamie King] [2nd part]
Composition vs. Inheritance
Composition over Inheritance
[Fun Fun Function]
Object-Oriented Programming is Garbage: 3800 SLOC example
UECS0 : What is an Entity Component System and Why should I care about ECS
Entity Component System #1
- Stefan Mischook is classic. For someone so measured and mainstream, it's telling that even he creates a video called 'Why OOP inheritance sucks'. He's too sensible not to notice the flaws of OOP. One wonders if he *really* wanted to say 'Why OOP sucks'.
- Jamie King/Source Decoded/Fun Fun Function, uh oh handle the enemy/platypus/murder robot dog (and banana-gorilla-jungle problem).
- The platypus/murder robot dog examples really highlight the problem of OOP and inheritance, the whole thing becomes a mess instantly.
- Jamie King's smart alec comments were hilarious.
- The Eforen Creates/Rez Bot/Brian Will videos were pretty good also.
- The Source Decoded/Rez Bot/Brian Will videos were surprisingly engaging for their length.
- Brian Will's video highlights how OOP pushes you to do ugly things.
- I feel that all the videos apart from the Brian Will video are heading towards the solution I use.
- In AHK, I just use an array (or struct) to store values (data), and for methods: I either store booleans (or a type name) to indicate which functions can/can't be used, or I store references to functions.
- In OOP they love to talk about separating things for ideological reasons, well what about the big one? Separating functions from data.
- The point that comes across in the videos is that single inheritance generally doesn't work for real-world problems.
- You get what I'd call a 'Christmas tree structure', and a 'tree shuffle problem' where any change shuffles everything underneath, instantly creating a giant mess.
- I would describe the best approach not as top-down, but bottom-up.
- I could call it: 'all you can eat', 'pick 'n' mix' or 'smorgasbord'.
- I.e. there are various values or functions that your array/struct can store, you look around at all the choices, and you pick the ones you want.
- The problem with standard OOP thinking is that top-down appears to be the more common paradigm, whereas bottom-up is perhaps the more useful paradigm.
- The other problem is that single inheritance is prevalent, and multiple inheritance is rare, this appears to be a fundamental flaw, a fatal flaw perhaps.
- In this video, Uncle Bob says that Java doesn't have multiple inheritance because the Java team were too lazy to add it. And that other languages like C# inherited (no pun intended) this problem. And that they created interfaces as a horrible hack.
- The diamond problem is cited as an excuse for this choice.
Bob Martin SOLID Principles of Object Oriented and Agile Design - YouTube
- I view the diamond problem as something of a canard. Not having multiple inheritance available is far more (magnitudes more) of a problem than the diamond problem.
- In this video, Uncle Bob mentions the false claim of 'we're protecting you programmers from yourselves'.
Robert C Martin - Clean Architecture and Design - YouTube