Re: c.d.theory glossary -- definition of "class"

From: mAsterdam <mAsterdam_at_vrijdag.org>
Date: Tue, 29 Jun 2004 01:52:05 +0200
Message-ID: <40e0af1e$0$37789$e4fe514c_at_news.xs4all.nl>


Alfredo Novoa wrote:

> mAsterdam wrote:
>

>>If you look closer at anything it becomes fuzzy.

>
> There are big differences among some terms and others.
> Mathematical terms are precise. It is a good idea to use them.
>
> For instance: to use value instead of object when object means value,
> to use type instead of class when class means type, etc.
>
> IMO class is acceptable when it means "reference type".

It is not at all clear wether 'class'
denotes a valid set of values.

>>>I don't see any usefulness in the term having a lot more precise terms
>>>like:
>>
>>What makes them more precise?

>
> The mathematical rigour and the test of time.
>
>>>type, variable, value and operator. Probably the four key terms in >>>computer language theory.

<snip reductions to those and dismissions>

>>But I did not do a count of them.
>>What makes these four special?

>
> They are very important to imperative languages (strictly functional
> languages are not very popular). And type, value and operator very
> important to all computer languages.

This reminds me of the classic searches for axioms, elements, atoms.
Your favorite four do have an 'essential' ring.

>>>What valuable notions "class" and "behavior" have that we can not find
>>>in the more precise terms?
>>
>>Your question is distracting.

>
> My point is: we can avoid the use of terms like: "class", "object",
> "behavior", "method", "message to an object", etc. without any lose.

That is what you state, and state again. You also said something that you are an OO developer. What of the OO approach do you use?

>>Type, variable, value all have static connotations.

>
> Type and value have static connotations, like class when it means
> type, but variables are dynamic. A variable is a placeholder for
> values, the value holded in a variable may change with the time.
>
>>operator in combination with variable introduces some
>>dynamics. In short you lose the essence of OO.

>
> Non sequitur.

Indeed. It is meant as a statement of opinion, not as a consequent.
I am not trying to prove anything. I am trying to break entrenched use of words so that they can serve to communicate ideas instead of serving as barriers between them.

> What is the essence of OO?

Identity, state and behavior as the basis for the organization of software in modules.

> In the opinion of some authors the essence of OO is that in some
> circumstances the compiler creates jump tables for us: the "virtual
> method table".

Who?

>>I would not like to see them replaced by
>>even more people who can't describe what
>>they see for lack of words.

>
> We can describe all about OO with the classic CS terms.

Surely we can explain a lot of phenomena while only thinking in particles, and we can also explain a ot of phenomena while only thinking in waves.

Really trying to descibe OO in term of classic CS (and yes, that seems quite doable at the surface) is one thing. But is that what you are doing? To me it appears if you are dismissing OO *because* you think it is possible to do without.

>>I first read about 'actor languages' in the late seventies
>>in a magazine called Creative computing. These later
>>came to fame as 'object oriented'. This amounted to a
>>(little) degradation of the dynamic aspects - actors
>>are active by definition, object may be passive.

>
> I only see a degradation in the use of the language :)
>
>>'type' as used in "Compilers. Principles, techniques,
>>and tools by Aho, Sethi and Ullman, is a
>>property of an operand (so passive to the operator).

>
> Types are more than that and operators are associated to types.

Could you quote a classic (say before the emergence of OO) CS work using 'type' as more than that?

>>In the terms I see a chain from active to passive.
>>Actor - object (class) - type.
>>
>>term   : applies to    : context  : characterised by :
>>-------|---------------|----------|------------------|
>>type   : operand       : static   : a set of values
>>class  : communicator  : dynamic  : behavior

>
> This is clearly wrong
>
> Type applies to operand throught the associated operators, exactly
> like class.
>
> I never heard about communicators.

Hmmm. That explains something.

> Classes are sets of values it that context.
>
> It is completely obvious that that context a class is as static as any
> type and it is also a set of values and a set of associated operators
> (methods).
>
> Methods and operations are the same and imply behavior.
>
> You are trying to prove that two sets are distinct comparing different
> subsets.

No. Sorry if I lead you to believe I was trying to prove something to you. I am not. I am stating my appreciation of some concepts I think you discard as useless.

<snip>

> Type is the most common use for class.
>

>>>We don't need any extension. Types have operators.
>>
>>And so many people agree with you on that.
>>What is your problem if types don't *have* but
>>are *subjected-to* operators?

>
> Types are associated to operators. No problem.
Received on Tue Jun 29 2004 - 01:52:05 CEST

Original text of this message