Thursday, April 20, 2006

Oh boy its the 90s again... OO arguments

Not much to do with SOA, but more to do with the wonder of our golgafrinchian approach to IT

A very short while ago I blogged about SOA being doomed and how it was similar to what happened in the 90s around OO, well blow me down if I don't then come across an article from the folks who do Drupal about OO and whether they do it or not...

Its like a timewarp, it come about because people have dared to suggest that in the 21st century that OO is the most effective way to build software systems. And then (very like the C developers in the 90s) trys to show how they are in fact doing OO, mainly by missing the point of what OO is about....

Now I thought that Encapsulation was all about limiting access to inner workings... but

"Like most other object-oriented systems, Drupal does not have a way of strictly limiting access to an object's inner workings"

Now I'm a bit unclear as to how Eiffel, Java, C# and even C++ can't limit access to an objects inner workings, I'd sort of naively thought that "private" helped in that way. So what Drupal does is use namespaces to help.... umm so sort of like Ada could claim with its packages... but less effective.

Under polymorphism it uses the old C stalwart of claiming that passing variable "somethings" to a function is the same as polymorphism. This seems to be confusing polymorphic functions with polymorphic classes.

Oooh but its better than the 90s because now we have GoF patterns to play with too.. they use Singleton (aka Global Variables) and a few others that you could have a crack at in C.

They appear to have a nice project, but rather than try and retrofit OO concepts onto what they have, why not just admit what they say at the end

"Drupal is on the surface a procedural system, because it is built in a procedural language [.....] A great deal of the power of Drupal comes from its underlying relational database, and relational programming techniques that mirror it"

So its procedural code on stored procedure (procedural) type elements. Be honest about it, be proud about it, but don't try and claim that you couldn't build it in an OO language, or that there is still a sensible discussion about whether procedural or OO is best.

Those who cannot learn from history are doomed to repeat it. --George Santayana

No comments: