5 ms·
True. Though I guess I don't have a chance to reverse the river made out of a constant stream of developers produced by universities and bootcamps, who think "C
by dpc_pw 6y ago
True. Though I guess I don't have a chance to reverse the river made out of a constant stream of developers produced by universities and bootcamps, who think "Cat extends Animal and makes_sound with "meow" and Dog extends Animal and makes_sound with "woof".
I'll try to keep it in mind if I'm ever to make a book or something like this about this subject.
- meheleventyone 6y agoYeah exactly what I mean, if your target is the understanding of OOP that comes out of intro courses at University then it's easy to knock down. To the point even OOP advocates complain about it. Steelmanning for example would be taking successful, performant OOP projects and tackling the way they use it. V8, LLVM or UE4 for example off the top of my head. Steelmanning is realizing that you can write data oriented code in OOP projects. Steelmanning is realizing that you can write an ECS-style database with OOP. It's further realizing that the ECS pattern as described is not inherently data-oriented and requires extension to actually meet that criteria (e.g. archetypes). And to be clear I'm not accusing you of ignoring these things but the discussion around this topic in general. Basically as a game programmer of over 16 years of professional experience I feel a lot of this stuff is dubiously presented. And I don't even like OOP particularly!!
- dpc_pw 6y ago> Steelmanning is realizing that you can write data oriented code in OOP projects. It's going to be arguing about names and definition, but I can't accept that it's OOP, when that put qualifiers on all "4 tenets of OOP", etc. Something like: - Abstraction(*) - Encapsulation(*) - Inheritance(*) - Polymorphism(*) (*) where useful, when necessary, but ... generally avoid. If someone could tell me which book is "The BEST OOP out there, then I would be happy to read it and then argue with it" :D
- meheleventyone 6y agoWell it’s kinda up to you how you construct your arguments but you’re not going to convince a lot of people without tackling the nuance that exists in the real world in favor of some kind of theoretical idealism. Otherwise you’re perilously close to constructing straw men.
- taffer 6y agoThe problem is that with a real-world project like V8, with its 2 million lines of code, it is impossible to tackle and discuss it in detail. What you really need is a model, i.e. a simplified version of reality that you can discuss, i.e. using Ockham's razor blade. Looking at V8 to understand OO is a bit like taking a balloon ride over a city to understand quantum physics.
- meheleventyone 6y agoYeah I think people will need to dissect parts if they did that! But the point isn’t you need to critique V8 but that you need to critique how “good” OOP software is put together not beginner level explanations.
- dpc_pw 6y agoBTW. I very much doubt V8 is OO, other than having to support "JS objects" as a part of it's own data-orientation.
- meheleventyone 6y agoYou could look at it and not guess.