It's an oooold problem. An issue that I had with "object-oriented programming", at least the way that I was taught in SDSU Computer Science classes in 199x, using C++ and Java.
My issue was roughly this: it seemed superficially sensible, and yet also far too likely to lead to mere bloat and disorder, despite the heavy emphasis on rigid object hierarchies and precisely defined structures. And yet I could never articulate that. I remember looking for articles on the subject and none seemed quite to get what the problem was.
Now I think I know...maybe.
The central assumption of C++ and Java "objects" is that you start with the simplest possible structures and then build them up step by step. It's almost as though these language reify the "value-added" approach to product design and evolution as practiced by mass-market capitalism. Everything is construed as starting with a simple thing and then deriving from it, always adding more and more.
Well...that's not orderly growth. In any real and growing structure, parts may added but other parts get resorbed or destroyed. Destruction must accompany added construction. So far as I know, no object-oriented language does that, but I know nothing.
There's this problem too, a subtle one. In this value-added notion of object inheritance, there's an implicit assumption that at the top there's something like the null object, the blank object from which all other objects are derived by the value-added method.
Now I think you can say that's true about C++. There's no top-level object. There's the platonic definition of what a C++ class is, I guess, but there's no defined null-object class. (That I know of. C++ has changed a lot...) But in Java, there is! The null object, which should do nothing, actually does quite a lot. It lends a bizarre sense of pervasive bloat to Java. There's a bazillion methods to keep track of.
But I'm just a poor mad poet, not a computer programmer. Please forgive my impertinence.
~Chara of Pnictogen
