Re: Clean Object Class Design -- What is it?

From: Costin Cozianu <c_cozianu_at_hotmail.com>
Date: Sat, 21 Jul 2001 23:33:58 GMT
Message-ID: <2cf20de8.0107061443.14a69b1a_at_posting.google.com>


> >> >This relational VS OO fight is quite misguide IMHO, but this is true
> >> >on both sides of the story.
> >>
> >> First, we have to get the OODB proponents to realize what their proposal
> >> really is. In almost all cases, they propose a network model database
 with
> >> domain support.
> >>
> >> In the end, it's the OODB vs. relational fight that is misguided since
> >> relational is already OO.
> >
> >Well, I doubt that you (or C.J. Date ) can say that the relational
> >model is already OO , since you don't know what OO is.
>
> LOL
>
> I have been programming with objects since 1987. How exactly is it that I do
> not know what it is? I think you have made an extraordinary accusation that
> requires extraordinary proof.

LOL. I'm much younger, been programming OO for only 7 years, but to my credit
I can say that I've been playing professional chess for more than 15 years.
As a side, I've added an Oracle DBA certification just for fun.

The simple proof that I can give to you is that there is no single OO theory. I've been debating this with several friend of mine, and no one
could give evidence of a single OO model from which Simula, C++, Smaltalk, Java, Object Pascal, Ada 95, Java, C# ,etc, etc, have been derived.
Everyone was scratching its own itch, and came with a subtly different OO
model. Not to mention ODBMS'es which don't look like they have any particular model.

So how can you possibly know what OO is when OO is different things to different people???

> >As a matter of fact you can't know what OO is, you could be more
> >permeable to other's ideas and find out about several sound OO models,
> >if you take the effort to study them.
>
> See above.

So you possibly know several OO models.

> >It may be that the relational model is already "OO", strictly in the sense
> >that ODBMS proponents want "OO" to be.
>
> From what I have seen, ODBMS proponents want a network model database with
> domain support. Actually, it's really a little worse than that because the
> ODBMS proponents want to add further complexity to the model by having
> multiple kinds of parent-child pointers.
>
> >The way I (and many others ) see it, OOP and Database Theory address
> >totally separate concerns.
>
> True. However, OODBMS and Database Theory addess totally identical concerns.

So what ? Danielle Steele and Marios Vargas Llosa (random couple) address totally identical concerns of their readers. And Llosa doesn't need to "respond" or refute what Danielle Steele is doing.

> >They are perfectly complementary to each other.
>
> Which is why the relational model is already OO.
>
>
> >And when people forget about this, you have a lot of confusion.
>
> What about when people try to actively hide this as in the case of many OODB
> vendors?

Yes, I'll give you another cultural reference:  Erasmus von Rotterdam, Praise of Folly.

> >After you study several OO models (let's say you can start with "The C++
> >Programming Language", or "The BETA Programming Language" as good
 examples)
> > you'll see how easily they fail to address the issues that OO is trying
> >to address.
>
> Aren't you really just talking about syntax here?

No, I'm pretty sure. As a matter of fact I found very little outside the language specification that is no-nonsense OO literature, and they are quite interesting too, both of them .

> You claimed that they do not understand OO well, and then you proceed to
> agree with them vehemently. I am confused. Are you trying to demonstrate
> that they do, indeed, understand OO very well.

No, they do not. They go as long as "proving" that if there is any OO model
that supports the normal things in OO (inheritance, polymorphism ) than
it has to be their model.
I greatly respect and value their work in database field, but in this particul instance I would call that a little exageration.

> Beyond syntax and physical implementation, what would distinguish these OO
> approaches?

Well, it's hard to describe here. But belive me, the differences between Smalltalk, C++, BETA, Eiffel and Ada 95 (random tuple) are quite fundamental. Otherwise, why do you think we have so many "OO" programming languages ?

> >How's that if we try to agree to a common unifying approach with regards to
> >all the cultures of the world, and construct an unifying literature?.
>
> Have you ever heard of Noam Chomsky?
Sure, I won't bother to read what he has to say about literature, I don't
have time to, but he was mentioned in my formal languages course.

> >Or what if we try to agree to a common model for all programming languages
> >wiping the differences between structured, OO, and functional programming.
>
> Have you ever heard of Alan Turing?

Oh, yes, I think that's one of the reasons why we haven't progressed as much
as we could, because almost everyone is thinking in terms of Turing machines
(or the equvalent theories).

> >> Since they are database experts addressing issues in the database field,
 why
> >> do you think they should address anything other than OODBMS?
> >
> >It looks to me they chase dead horses.
> >What is an OODBMS , and is it really a database ?
>
> You mean what is an Object Oriented Database Managament System and is it
> really a database management system? Quite frankly, I would question whether
> any so-called OODBMS is a database management system too. I am at least open
> to the idea that the more sophisticated products might qualify.

No matter how sofisticated those "posible" products could be, they will
not allow me to write an application client in other language than what
they've been programmed for.
The client server comunication is essentially DATA communication, it can be object comunication only if you limit the two systems at a common programming language (or a restrictive set of programming languages).
And the Distributed Object Model as in CORBA/DCOM cannot be used as a substitute for databases.

And even if somebody would be smart-enough to create an ODBMS that would
magically translate class definition from ,let's say, Java to C++ - which
is a very dubitable proposition anyway- it can still be the case that I
might want to program in Prolog or Scheme. So what do i do with an ODBMS ? Nothing. It's not a database. It's an "object base", or "object persistence base".

> >They address only the hype created around OODBMS.
>
> Huh? If you remove the hype, nothing remains. In your opinion, what should
> Date and Darwen do differently in order to address the essense of OODBMS?

Well, they would do much better if they addressed the little parts missing in
 their own work.
OODBMS and OODBMS hype are VERY EFFICIENTLY handled by the marketing departments from Oracle, IBM and Microsoft.

> Huh? Never heard of SQL, Sequel, Alpha?

What real application can be done solely in the languages above ?

> Yes. Imperative, procedural programming languages manipulate data at a much
> lower level and require far more instructions to perform simply described
> operations.

No. As much as I love constraint based programming and functional programming,
and I admit they are a higher level of abstraction it is absolutely fullish
to pretend that "higher level of abstraction" = "better".

At least until some smart guy will come to give us a prove that the two
approaches have the same expressive power under the same time and space constraints.
Otherwise, why do we think we program in imperative PL ? Are we some kind of masochists or a bunch of ignorants ?

> >Well, that is one really stupid remark.
>
> If you say so.

I do.

> >You're comparing apples and oranges and say you don't want to criple
> >apples down to the level of oranges ??
>
> I am comparing a very high level declarative data manipulation language with
> a very low level imperative, procedural data manipulation language. How is
> that comparing apples to oranges? Am I not comparing a data manipulation
> language to a data manipulation language?

Depends on what you mean by data manipulation language. Every language manipulates some kind of data ...

> >There's no such thing as "impedance mismatch" in my view.
>
> I used to think this way, but I eventually saw what impedance mismatch
> really is. Relational databases use an extremely simple logical interface
> with a clear separation between the logical interface and the physical
> structure. Current programming languages use complex interfaces that reflect
> the physical structure in the logical interface.

Well, nobody invented a better model that will handle specification of algorithms as efficiently. Which is the domain of OO languages and is not
the domain of relational databases.

> >Well, from your statement I can imply that OO people are generally
 misguided
> >- they adress the wrong problems.
>
> You cut off the original statement. I challenge you to demonstrate that this
> second accusation is any less non sequitur than the first.

Well, I give up on this one.
But empirically, you can see how many people feel offended by you. Yeah, those that are offended are kind of soft, but whatever, if you feel better ...

> >We should try to cease talking about categories, and talk about individuals
> >(individual people, individual ideas or theories).
>
> Individuals are boring. Other than the general principles that derive from
> the variability of individual skill, who cares that individuals vary? Why
> don't we stick to generally applicable principles? They are much more
> interesting.

Yes, that's nice. In such a way other's came to the conclusion "jews are bad".
It works in physics, I'm not sure if it's of any use when we speak of people.

> >It really depends what particular OO model we're talking about.
>
> Other than syntax and physical implementation, what differentiates all these
> OO models you keep claiming exist?

Well, for example what is a type, what is an instance, what is a "method" (Ada 95 doesn't have methods , big PLUS for them), what is a constructor, what is destructor. And I haven't begun to study CLOS yet.
Is this enough for you ?

My rather good level of understanding and practical experience in Java,
C++, Object Pascal (Delphi), and my brief studying of Ada 95, Beta, Smalltalk, Python, and even Tutorial D, allows me to draw the conclusion that they have
really different object models.
In the meantime I wasn't able to find a signle instance of a full and complete

theory on the essence of OOP.
It may be that I'm wrong, but I wait to here your arguments.

> >> >On the oher hand the real issue is that denormalization
> >> >is hardly THE only way to achieve a fully normalized and
> >> >well thought database design, and as a method I find it
> >> >awkward to say the least.
> >>
> >> I can emphatically say that normalization, on its own, cannot possibly
 lead
> >> to a well thought database design. However, I do not think one can really
> >> claim that a design that was never normalized is well thought.
> >
> >Well, isn't this the single most glaring mistake C.J. Date makes
> >in "Introduction to Database Systems" the chapter on database design ?
>
> Perhaps, you need to go back and re-read that chapter. My statement above
> seems to reflect the contents of the chapter quite well. I didn't see any
> mistakes there.

The glaring mistake is that they don't offer any database design method in
there, they only offer normal forms as criteria for a good design. They don't even say oif the criterias are complete.

And they are contempt to do a brief and vague critique of Semantic Modelling.
It may be that E/R methodology is not perfect, but it's better than nothing -
which is what they have with regards to database design method.

> >By the way, you don't need to normalize something that you reach through
> >an alternative database design method and you can prove it is already
> >normalized.
>
> In case you hadn't noticed, I started this thread by noting that the means
> to achieve a normalized database are non-deterministic. That means there are
> several paths and several possible solutions to achieve 5NF. I also noted
> that the means to evaluate normalization are deterministic.
>
> Any method or process that leads to a 5NF design can be called
> normalization. In that sense, your above statement boils down to:
>
> "By the way, you don't need to normalize something once you have normalized
> it and you can prove it is already normalized."
>
> And your point would be....? A less polite response would be: "Duh!"

Sure, might point is that you can pay a visit to, let's say: http://hpdrc.cs.fiu.edu/~hpdrc/WS/semantic/Rishe-92-DDS.html.

And see how somebody can follow a simple method to reach a good database design, without worying too much about denormalization, because he will have already a fully normalized design.

Unlike what happens if somebody studies "Introduction to Database Systems"
and faces a database design problem.

> >There are other subtle issues as well with their approach in
> >"The 3rd Manifesto", but they would rather keep themselves
> >in seclusion (read ivory tower), so not everything is clear and bright
> >on the relational side as well as on OO sides, "loosely speaking" as there
> >really are no sides here.
>
> You are talking gibberish mixed with ad hominem. Would you care to direct
> your comments to the content of their proposals and not to them?

Well, I refrain from going into details here, and I'd be surpised if you
didn't now that they are in a state of incomunicado.

So as much as you don't like ad hominem (even if you do use ad hominem),
this already is a fact about them.
And you wouldn't dare to say that the relational theory is complete and
perfect, or would you?
Much less the 3rd Manifesto.

> >You could also contribute to a better understanding by lowering the tone
> >about OO in general, and if you try to understand the other's view,
> >you can find better and more meaningful replies.
>
> What makes you think I do not already fully understand the others' views?

Well, just for example, you could have shut down Carl Rosenberg's delirium about his OO database benchmark crushing relational databases
in benchmark numbers if you cared to download his benchmark code so you
could see that the guy has absolutely no clue about how to write Java + SQL code, and he benchmarks against a code that not even a first
year student would write :)

Instead of sending him back to study, with non-refutable arguments, you gave him space to discuss all kinds of non-sense.

As I have learnt in chess you have to go beyond an oponent's immediate arguments and know his background, his intelectual potential, psychology,
 etc, etc.
I guess the scientific term is empathy.

In this case works one way, but in other cases you might find that others
have good ideas that they're not quite able to express. And you have to be gentle enough not to refute them only on their limited capacity of expressing ideas.

Cheers,
Costin Received on Sun Jul 22 2001 - 01:33:58 CEST

Original text of this message