Re: Clean Object Class Design -- Circle/Ellipse

From: Bob Badour <>
Date: Sat, 1 Sep 2001 23:14:07 -0400
Message-ID: <Pthk7.641$>

James A. Robertson wrote in message <>...
>Bob Badour wrote:
>> James A. Robertson wrote in message <>...
>> >> >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++.

>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.

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

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
>> >> >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.

>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. Received on Sun Sep 02 2001 - 05:14:07 CEST

Original text of this message