Of course OOP is unnecessary since you don't need it to write good software. But one could argue that all paradigms are unnecessary since you could technically write any program using any paradigm. OOP, procedural, functional, whatever. My point is that people are different, use whatever you are most comfortable with.
EDIT: Check Bob Burrough's comment to the youtube video. He worded it much better than me.
The truth is that OOP is in most cases the worst possible way to model the real world. There is always a much more adequate model (besides the single case I mentioned before). So, sticking to a paradigm that does not work at all is nothing but a religion and should be treated as such.
That's a baseless assertion. Just because you developed a distaste for a particular programming paradigm it doesn't mean that your baseless assertions are suddenly sound.
> So, sticking to a paradigm that does not work
Somehow, the software world is founded on something that you somehow claim doesn't work.
Perhaps you've taken your pet peeve a bit too far.
I only know one problem domain where a form of an OOP is required (although it must be built on top of asynchronous messages, i.e., none of the existing popular OO implementations would fit) - agent-based simulations. It is well below the 0.01% threshold I set so generously.
And please do not confuse the OOPish language features (which are just poor man modules support in most cases) with OOP-the-design-methodology. The latter is garbage, the former is just an innocent bunch of language features.
Btw., it is funny when OO zealots are calling anything else a "religion". They should look in a mirror first. OO is a religion and nothing but a religion.
I don't know how to go about debating the merits of OOP, aside from saying it's convenient for things that... behave like objects. And of course there are multiple ways to skin a cat, so you can reply with alternate ways to code graphical widgets etc. And then I say you're putting the horse before the cart, and you say the same to me...
The only thing I'd be dogmatic about is that programming is still a complicated mess, and it will likely remain so for decades. Nobody has any of this remotely figured out, so it's probably best to be pragmatic, rather than commit oneself to purported "magic bullets" (whether they be OOP, POP, Functional, Procedural, etc).
My guess is that the real "magic bullet" will come from AI. I doubt human beings are smart enough to reason about what good programming practices look like. So until an AI comes along to tell programmers how best to design code, it's all just a matter of personal preference.
> I doubt human beings are smart enough to reason about what good programming practices look like.
You don't need to be smart to reason, after all, reasoning is a formal, mechanical thing. And there is always a mechanically derived best possible model for each and every problem domain. So it is in fact always very easy to prove that OOP is inadequate and another model is this many times closer to the formalism of the problem domain. For every problem domain out there. There is no place for personal preferences, it's all formal.
Well, I admire your optimism, at any rate.
If you want to have a paradigm that is really succesfull, it would involve using every aspect of the human mind. We are good at perceiving 3d space. We are good at instantly computing physics. We are good at perciving other human behaviour. We are good at recombining existing tools to create more sophisticated tools. If you want optimal results, without the struggle of reeducation, tailor the paradigm to the existing creature, not the inverse approach.