Re: Clean Object Class Design -- Circle/Ellipse

From: Richard MacDonald <macdonaldrj_at_att.net>
Date: Sun, 02 Sep 2001 15:43:54 GMT
Message-ID: <_ssk7.4288$Uf1.313936_at_bgtnsc06-news.ops.worldnet.att.net>


"Bob Badour" <bbadour_at_golden.net> wrote in message news:Pthk7.641$m%1.127427644_at_radon.golden.net...
> James A. Robertson wrote in message <3B906770.E1C0185E_at_mail.com>...
> >Bob Badour wrote:
> >>
> >> James A. Robertson wrote in message <3B8A6798.A8F25218_at_mail.com>...
> >
> >> >> >1) Smalltalk is a crappy language
> >> >>
> >> >> Actually, I said it is just as crappy as C++, which does not say it
is
> >> >> crappy.
> >> >>
> >> >
> >> >Can you list your specific complaints?
> >>
> >> We can start by observing that Smalltalk, like C++, makes insufficient
> >> distinction between values and variables.
> >>
> >
> >hmm - C++ variables and Smalltalk variables are entirely different,
> >leading me to wonder how well you know Smalltalk.

>

> I know that variables change while values do not. If Smalltalk gets
> something this fundamental entirely wrong, then it is much worse than C++.

Your wiggleword was "if". Glad you used it because it means you have a correct sentence. A completely useless sentence, but still correct.

>

> >In C++, one declares
> >a variable as a type, thus determining the specific storage type to be
> >used by that variable.

>
> This is one way to make insufficient distinction between value and
variable.
>
>

> >In Smalltalk, variables are not declared as
> >being of a specific type - they are references to arbitrary objects.
>
> And the "arbitrary objects" are themselves variables. ie. They might
change.

Or might not. A variable can hold onto 5. 5 does not change.

>

> >In
> >Smalltalk, a variable doesn't have to reference any particular kind of
> >object.
>

> Neither does an object reference in C++.
>
>

> >> Perhaps, Richard would like to list his specific complaints that are
> >> pertinent to the discussion at hand? Or would you like to offer one or
> more?

Specifically, you're making an error that may or may not be important. Smalltalk has Objects that are values.
You've been asked what you would call the thing/type/whatever that is both variable and value. I don't think you answered. I assume its a concept that is foreign to you and hence irrelevant. Well, for an OOist, that thing is Object. You may have something useful to say, but since we part company at such a fundamental level, its hard to know.

> >> >> >2) Instances are not values.
> >> >> >
> >> >> >Since Smalltalk *has* instances that are values (the number
> >> >> >5 comes mind),
> >> >>
> >
> >Generally (In VisualWorks, most others are roughly similar), a variable
> >references an object.

>

> A named variable references an object variable.
>
>

> >In fact, it refs an object header, which in turn
> >refs the actual object.

>
> In fact, it refers to an object header variable, which in turn refers to
the
> actual object variable.
>
>

> >There are exceptions; one can have 'immediate'
> >objects, where the header actually holds the object (SmallInteger
> >objects, for instance).
>

> There are exceptions; one can have 'immediate' object variables, where the
> header variable actually holds both the header variable and the object
> variable.
>
>

> >For the developer, this doesn't actually matter.
>

> Except that Smalltalk makes insufficient distinction between value and
> variable preventing the developer from establishing proper, natural
subtype
> relationships.

How do you know this?

>

> >In fact, if you think
> >it matters, then you are paying way too much attention to detail.
>

> None of the irrelevant details you mentioned in your post matter. It only
> matters that Smalltalk makes insufficient distinction between values and
> variables, which I think you have amply demonstrated.

When people talk at cross-purposes, they generally come out of the discussion with the same pre-ordained opinions they went in with. As an observer, I don't see how your conclusion has been demonstrated. Received on Sun Sep 02 2001 - 17:43:54 CEST

Original text of this message