6 ms·
"The Platonic ideal of OOP is a sea of decoupled objects that send stateless messages to one another. No one really makes software like that, and Brian points o
by FpUser 7y ago
"The Platonic ideal of OOP is a sea of decoupled objects that send stateless messages to one another. No one really makes software like that, and Brian points out that it doesn’t even make sense: objects need to know which other objects to send messages to, and that means they need to hold references to one another. Most of the video is about the pain that happens trying to couple objects for control flow, while pretending that they’re decoupled by design"
What a bunch of baloney. My products ofetn live in this exact platonic world: class instances running in multiple threads send and receive asynchronous messages through internal pub/sub bus without knowing much about each other at all. All is working just fine, controlling devices, doing data processing, GPU accelerated display and whatnot.
- eternalban 7y agoWould be great to see __resumes__ alongside these blog posts. To state with such certitude that OOD is "bad" and a "disaster" takes a lot of chutzpah. I hope it is not necessary to point to existing (inherently) complex software developed using OOD. As an aside, Incidental vs Inherent Complexity is more correct than "accidental" complexity. ("Accidents" happen by chance and if it keeps happening to you -- keep hitting that thumb with the hammer? -- then possibly try 'habitual' and don't blame the hammer.)
- youerbt 7y agoAnd that's OOP I can subscribe to. But is it OOP that is encouraged or made easy by standard OOP languages? Sounds more like Erlang to me.
- dnautics 7y agoIt's not just erlang (though it's basically how I write my elixir)... It's also restful microservices.
- FpUser 7y agoHas nothing to do with Erlang in particular I've written these in c/c++/object-pascal. Implemented my first reliable multicast, pub/sub and state machine engine back in the 90s when I could not afford TIBCO and the likes ;)
- dpc_pw 7y agoOOP is used to name both the original (Smalltalk-like) OOP which was OK, and the modern OOP (Java-like) which is terrible. This is making it confusing for everyone. Critics of OOP (like myself) usually criticize the Java-OOP, while considering the Smalltalk-OOP to fall under Actor Model definition in the contemporary software. It's really hard to have these conversations until everyone acknowledge and understand which OOP is being talked about a given moment.
- ken 7y agoI suspect Smalltalk style OOP has relatively few critics simply because Smalltalk has relatively few users. Perhaps it has implicit critics, as so few people use it.
- 12thwonder 7y agoCan u share any of your code with us?
- a_wild_dandan 7y agoTodoMVC is a clear example.[1] If JS isn't your thing, check out Redux.NET for C# examples, etc. Basically anything that uses Redux principles.[2] It's how I structure all of my new projects when possible. [1] https://github.com/reduxjs/redux/tree/master/examples/todomvc https://github.com/reduxjs/redux/tree/master/examples/todomv... [2] https://redux.js.org/introduction/three-principles https://redux.js.org/introduction/three-principles
- bmurphy1976 7y agoAny decent sized Erlang project is implemented this way. Also see Smalltalk, Akka, and the like.
- a_wild_dandan 7y agoYeah the Platonic ideal he's describing is Redux. I use it all the time in my C# projects and TypeScript projects.
- galaxyLogic 7y ago> send stateless messages to one another I would have thought that messages are ALWAYS stateless. It is the objects which have a state, not the messages.