Newsgroups: comp.databases.object,comp.lang.clos,comp.lang.dylan,comp.lang.c++
Path: cantaloupe.srv.cs.cmu.edu!rochester!udel!gatech!news.mathworks.com!tank.news.pipex.net!pipex!howland.reston.ans.net!ix.netcom.com!netcom.com!jgk
From: Joe Keane <jgk@netcom.com>
Subject: Re: ODBMS & Dynamic, Reference Semantics Languages
Message-ID: <jgkDFGL67.EC7@netcom.com>
Summary: They're similar.
Keywords: owner
Sender: jgk@netcom3.netcom.com
Organization: none
References: <DERWAY.95Sep22090117@alumni.ndc.com> <43uuku$cva@inet-nntp-gw-1.us.oracle.com>
Date: Mon, 25 Sep 1995 11:27:43 GMT
Lines: 31
Xref: glinda.oz.cs.cmu.edu comp.databases.object:7637 comp.lang.clos:3509 comp.lang.dylan:5272 comp.lang.c++:150579

In article <DERWAY.95Sep22090117@alumni.ndc.com>
D. Erway <derway@ndc.com> writes:
>In C++, an object is a block of memory that holds the values of the members,
>and the implementation specific run time type info, (vtable, etc).

>So, while in C++ all of an object's bits are localized, in a Reference
>Semantics language they are not.

I don't think that there's that much difference.

I think that most people would consider an object to be the fixed-size part
*plus* all the various areas of memory it may allocate and basically `owns'.
There may be some disagreement about this, but someone has to store the data.
Certainly your application won't work very well if your database stores only
the fixed-size parts of objects and loses the attached areas of memory.

I'd say that an object database must deal well with objects that change size.
Strings get changed, arrays get resized, lists have elements added, and so on.
If an attribute is defined to be `string', you most likely don't want to make
it a fixed-size character array and impose some arbitrary limit on the length,
because that's basically childish programming and it can waste a lot of space.
If you need only fixed-size records, you can use a record-management library.

Overall there's not that much difference between C++ and Lisp or Smalltalk.
For example, both may store a small integer directly in the fixed-size part,
while they probably use indirection for a string or a variable-length array.
In some cases they may use a different scheme, for example C++ may store a
double-float attribute directly, while Lisp may store using indirection.

--
Joe Keane, professional database programmer
