Re: RM and abstract syntax trees

From: paul c <>
Date: Wed, 31 Oct 2007 16:17:18 GMT
Message-ID: <iU1Wi.164795$1y4.53311_at_pd7urf2no>

David BL wrote:
> On Oct 31, 7:23 pm, "David Cressey" <> wrote:

>> In this whole discussion,  I have a big problem understanding what is meant
>> by "the equivalent of pointers".  A pointer is NOT an arbitrary meaningless
>> identifier.  A pointer is an address. If you assign an arbitrary meaningless
>> identifier to an object for reference purposes,  that is NOT the same thing
>> as referencing the object via a pointer.
>> If you need the concept of arbitrary meaningless identifier in order to make
>> a point about how RM represents trees,  go ahead.  Just don't call them
>> "pointers" and don't assert that they are the quivalent of pointers when
>> they are not.

> Pointer taken!
> So you want to reserve the word "pointer" specifically to where a
> memory address is involved on a Von Neumann architecture? Since it's
> merely a terminology issue I won't disagree with you. I presume you
> would say that a C++ smart pointer that binds to its referenced object
> using a key in a red black tree must not under any circumstances be
> regarded as somehow being the "equivalent" of a pointer or being
> "analogous" to a pointer.
> The following is quoted from
> Pointers are so commonly used as references that sometimes
> people use the word "pointer" to refer to references in general
> Since I was only drawing an analogy, I don't particularly see the
> merit in being careful with the distinction between "pointer" and
> "reference".
> However, I don't think it's bad at all that you want to be precise
> with terminology.
> I could formalise "the equivalent of pointers" by defining an
> isomorphism between a C based pointer implementation of an AST, and an
> RM representation using arbitrary meaningless node identifiers, and
> where pointer dereferences in the C implementation map to
> corresponding joins in the RM representation.
> Note BTW that mathematicians may even go beyond the term "equivalent"
> and use "same" when they see an isomorphism. For example the axioms
> of the reals only make them unique up to isomorphism, yet we say *the*
> reals.

Here is a quote from Codd's book about pointers. (I snipped some sarcasm about AI programs):

For many reasons, pointers are extremely weak in supporting relations. In fact, an individual pointer is capable of supporting no more than a relation of degree 2, and even then supports it in only one direction. Moreover, pointers tend to foster needlessly complex structures that frustrate interaction with the database by casual users, especially if they are not programmers.

... It is therefore a basic rule in relational databases that there should be no pointers at all in the user's or programmer's perception. For implementation purposes, however, pointers can be used in a relational database management system "under the covers," which may in some cases allow the DBMS vendor to offer improved performance. <end quote>

I think the sensibleness of this rule doesn't come through until one goes beyond structural perceptions and looks at his RM operators. Then it's more obvious how his values from "domains" associate relations in a simpler and more universal way than pointers can. Received on Wed Oct 31 2007 - 17:17:18 CET

Original text of this message