@ Loup's Impossible? Like that would stop me.

January 2011

Taboo “OO”

We should stop using the term “Object Oriented”.

I see two reasons:

WTF?

On one hand, I have overwhelming evidence that “OO” is useless in technical discussions. No one readily knows what each instance of that term is intended to mean, and when we do, it generally isn’t distinctive enough.

On the other hand, many programmers are still uttering that term with a straight face. They’re still using it to describe programming languages and practices, to assess their merits, and to address their flaws.

Are they all nuts?

For quite some time, I refused to come to that conclusion, because it suspiciously sounded like some “they’re all wrong, I’ll show them” syndrome. Let’s face it, the prior probability that a majority of professionals have such a basic misconception about their own field is small. I was confused. So I looked. I asked. And I finally found the answer.

They are nuts

Or at least somehow incapable of changing their minds in the face of overwhelming evidence. It took me some time to understand what was going on. I now see several reasons.

One reason has to do with: “If a tree falls in the forest, and no one hears it, does it make a sound?”. Everyone should agree that in such a case there will be acoustic vibrations but no auditory experience, and be done with it. The facts have all been laid out, after all. Nevertheless, many can still feel the nagging question: “Okay, but does it make a sound?”. This feels like a real question. Actually, it’s a mere dispute over the meaning of “sound”.

The same happens with “OO”: we know for instance that C++ has classes and inheritance, but also primitive types, and no “top” class. We should be done with it, but since have the label “OO”, whether C++ is OO or not feels like a real question. Actually, it’s a mere dispute over the meaning of “OO”. OO is not some thing that exist independently of us, of which there is a natural definition we could find. We just failed to pick a definition among those we made up.

Another reason has to do with the aura of mystery that surrounds “OO”. I often hear “OO is hard”; “Few really get OO”. Wait a minute, are you saying this because you know OO, or because you don’t?

Yet another reason is the popularity of languages that brand themselves “OO”. C++, Java, Python, Javascript, Self… New ones pop up daily. That doesn’t help define “OO”, but it does makes it ever more present. All these people around OO must me onto something, right? Upon reflection, I think not. I suspect this is just some kind of network effect.

Conclusion

OO is not some arcane knowledge that most of us don’t “get”. “OO” doesn’t intrinsically have a definition that we merely have a hard time to find. It has become a mere marketing term wrapped up in a fake aura of mystery, completely unsuitable for serious discussion.

I’d like the madness to stop.