Criticising OOP is like swearing in church?

My personal favorite programming language, Tcl/Tk, is sometimes criticized for not being or having "one true way" of doing Object Oriented Programming.

Tcl is such a more flexibile language than most (simillar in this respect to Lisp) in allowing the programmer to define his own control structures to fit the needs at hand (even so far as enabling radical language modifications). There isn't just one way to do OOP in Tcl, there are lots of ways.

Personally I quite like Will's snit, and XOTcl.

But, anyway, back to the topic at hand. Tcl sometimes gets flamed for either not having any OO-abilities (that are "built-in"), or for having too many. Seems a lot of people just want there to be one way to do something—which is a constraint that doesn't naturally fit well with a language that gives you so much power, freedom and flexibility.

I've started reading Lambda the Ultimate ("The Programming Languages Weblog") and a comment to a recent article linked to an essay, Why OO Sucks which begins:

When I was first introduced to the idea of OOP I was skeptical but didn't know why - it just felt "wrong". After its introduction OOP became very popular (I will explain why later) and criticising OOP was rather like "swearing in church". OOness became something that every respectable language just had to have.

As Erlang became popular we were often asked "Is Erlang OO" - well, of course the true answer was "No of course not" - but we didn't to say this out loud - so we invented a serious of ingenious ways of answering the question that were designed to give the impression that Erlang was (sort of) OO (If you waved your hands a lot) but not really (If you listened to what we actually said, and read the small print carefully).

At this point I am reminded of the keynote speech of the then boss of IBM in France who addressed the audience at the 7th IEEE Logic programming conference in Paris. IBM prolog had added a lot of OO extensions, when asked why he replied: Our customers wanted OO prolog so we made OO prolog

I remember thinking "how simple, no qualms of conscience, no soul-searching, no asking "Is this the right thing to do" ...

The rest of the article is an interesting rant to read. I personally believe OOP is over-hyped, and that too much of the world thinks that OOP means (just) the type of OO available in Java or C++, but that it is (like other methodologies) a good tool to have in the toolbox. Tcl just allows me to have a whole bunch of OO-tools in the toolbox, not just one.


—Michael A. Cleverly

Permanent URL for this post: http://blog.cleverly.com/permalinks/40.html