Re: Entity and Identity
Date: Thu, 23 Jul 2009 06:25:37 -0700 (PDT)
On Jul 23, 2:14 pm, "Walter Mitty" <wami..._at_verizon.net> wrote:
> "Nilone" <rea..._at_gmail.com> wrote in message
> > Each aspect of OO was meant with good intentions, and
> > works individually, but not together.
> This is the great pitfall of adhocracy.
> >The point is, if we're going to have abstraction mechanisms, it needs
> >to be the right mechanism. The relational model is an example of
> >such. It works for any composition of its features. The user may not
> >understand the model, and thus the consequences of how they use it,
> >but that is not the fault of the model. The information is available,
> >and the consequences of applying the model is clearly defined.
> >With OO, only a very specific subset of the possible compositions of
> >its features are valid and useful. Using some features together
> >breaks the promises made by the abstraction mechanism, i.e. it
> >violates its own reason for existence when used incorrectly. And
> >doing is so is very, very easy.
> Both RM and OO can be easily misused, as evidenced by the last thirty
> years. Whether one case is the fault of the learners and the other is the
> fault of the model itself is a case that's yet to be made, IMO.
No, I'm making it now.
> You make a
> good case that RM is internally coherent and that OO may lack that internal
> coherence. That does make RM easier to learn correctly for a certain subset
> of those who set out to learn it. But only for that certain subset.
Ease of learning never trumps correctness. It's much easier to remember that everything adds up to 0 than it is to learn to do arithmetic.
> >I believe programmers will be best served by completely discarding OO
> >as currently understood.
> Is OO as currently understood different from what Alan Kay had in mind back
> at Xerox Parc? In what ways? What other luminaries aside from Alan Kay can
> speak for OO as a whole? What would programmers be better served by than
Yes, it's very different. A quote from
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en: "OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them."
Pretty much any of the existing alternatives to OOP would be better. Functional seems to be the favorite of language designers now. Personally, I'd like to see relational go all the way.
> At the risk of answering my own question, I'm going to say what I think the
> great divide between good programmers and good database experts was some 25
> years ago, when I learned about databases. The great divide was between
> "process centered thinking" and "data centered thinking". This was more a
> matter of modes of thought than of languages and tools. But the two kinds
> of thinkers will gravitate towards different kinds of languages and tools.
> It's not clear to me, but I rather think that OO is a tool for process
> centered thinkers.
There are better tools. Ones that aren't broken. Received on Thu Jul 23 2009 - 15:25:37 CEST