Re: Entity and Identity

From: Nilone <>
Date: Wed, 22 Jul 2009 07:36:38 -0700 (PDT)
Message-ID: <>

On Jul 22, 2:26 pm, "Walter Mitty" <> wrote:
> "Nilone" <> wrote in message
> >On Jul 22, 5:15 am, "Walter Mitty" <> wrote:
> >OO programmers do it because that is what they were trained to do.
> >Take a look at
> >
> >It sounds great, like playing with Lego and being able to design your
> >own pieces.  All the big language vendors are offering it, so they
> >think it's a proven technology.
> >OO is broken, and most programmers don't see it.
> That might explain why the thundering herd follows OO, but it doesn't
> explain why leaders in the field recommend it.
> I can't comment on whether your claim is valid or not, because I've never
> attempted an industrial strength project using OO design.
> But I can say that it would surprise me if the industry were captrivated by
> a broken paradigm for as long as OO has been dominant in the world of
> programming.
> I'll mention in passing that there was a constant visitor who spent about
> three years in this forum claiming that the RM was counterproductive, and
> that products like Oracle, DB2, and SQL server had delayed the forward
> progress in the state of the art.  That person's arguments were not
> persuasive to the vast majority of the regulars here.  The arguments were
> largely based on anecdotal evidence and non sequiturs.  My own personal
> experience was enough to contradict the anecdotal evidence in my mind.  The
> non sequiturs fell of their own weight.
> For the theoreticians in the newsgroup, the theoretical underpinnings of the
> RM were sufficient to contradict the claim that RM was either broken or
> ocunterproductive.
> But the larger counter argument was to ask how the industry could have been
> captivated by a giant blunder over a period of decades.
> I would ask the same question about OO, even though I am in no way an OO
> fan.

Your counter-argument boils down to an appeal to popular opinion, which is not a valid argument. I'll answer it anyway. I should note that when I rail against OO, I mean class-based OO with inheritance and overriding.

Programmers and businesses can't simply and easily decide what paradigm to use based on its merits. They buy into a language based on a number of factors, and the merits of a paradigm is only a small part of it. Other factors include popular opinion, opinion of business partners, clients' opinions, big vendor support, commercial support, compatibility with associated platforms and tools, and ease of learning. OO is strong in all of these. It is only weak in its logic, which is usually not considered at all.

Since programmers and businesses have a vested interest in supplying what other programmers and businesses want, any paradigm will be selfpropagating  and self-sustaining. OO literature and tools abound, which makes it near impossible to not use it. Many businesses benefit from applying OO analysis and design, since any analysis and design is better than none. OO problems are only discovered after a lot of time and effort have been invested, at which point it simply isn't costeffective  to back out.

The problems I mentioned are not anecdotal, they're documented. For reference, look at the diamond problem, circle-ellipse problem, subtyping vs subclassing, and the Liskov substitution principle.

Take a look at entity systems in game development, which provides insight into what OO could have been. It just so happens that these entity systems are very compatible with the relational model.

Take a look at the Theory of Classification ( ~ajhs/classify/), which attempts to place OO on a solid theoretical foundation by describing classes as function-bounded type generators, i.e. second-order logic constructs. Received on Wed Jul 22 2009 - 16:36:38 CEST

Original text of this message