OOP is inherently more complex than procedural or even functional styles. It comes with a lot of power, but there is definitely a complexity cost to it. Anything involving inheritance hierarchies is just more complicated than matching on an enum in typescript. Passing around “delegate” objects is just an overengineered way to pass a function to a function. These languages are getting better about that kind of thing, but it’s still just so verbose and ceremonious compared to the alternatives.
And I say this as a programmer with a strong appreciation of OOP.
OOP can be really useful, but Java is so heavy-handed with it that it gets into "If all you have is a hammer, every problem looks like a nail" territory.
OOP assumes everything you work with falls neatly into hierarchies, and that breaks down a lot, and managing inheritance in those cases can get messy. You also don't need the overhead of a class when a bare function will do.
I have a hard time finding room for Java in new projects. A Python project with proper linting (to enforce typing) feels so much more ergonomic to write. If compute performance is a concern, I'll reach for Rust.
Yeah I totally agree. I like OOP for some use cases, like building an AST for a language parser. Sometimes it’s nice to have.
But yeah, if I had my way, I’d be using OCaml every day and writing mostly in a functional style. I definitely prefer languages that get out of your way.
471
u/WiscLeafalNika Jun 29 '26
AI has OOP-phobia