From: pcg@aber.ac.uk (Piercarlo Grandi)
Newsgroups: comp.object
Subject: Re: A Pre-Release FAQ
Date: 29 Dec 92 20:36:17 GMT
Reply-To: pcg@aber.ac.uk (Piercarlo Grandi)
Organization: Prifysgol Cymru, Aberystwyth

On 29 Dec 92 04:23:55 GMT, objsys@netcom.com (Bob Hathaway) said:

objsys> BASICS ======
objsys> What Is an Object?

objsys> Simply put, an object is a variable.  In classical
objsys> object-oriented programming, this variable has a type (called a
objsys> class) defining its structure and operations (called methods)
objsys> which may be performed on the object.  Classes also define
objsys> inheritance for objects.

This is among the definitions of object/type/class the most stupid (I
can count several fairly major and catastrophic mistakes[*]; probably
*no* part of your definition makes sense, starting with the 'simply
put') you could come up with. Have your seriously reread your article
before posting it?

A point of order too: a FAQ should not be about the FAQ author's
opinions; the FAQ should only be a list of facts: for example in an OO
FAQ at the 'what is an object' entry I would say something like: 'There
is a lot of controversy as to the proper definition of object; the
Simula 67 common base language says "A"; Hoare and Nyygard in Structured
Programming say "B"; the Smalltalk manual says "C"; the C++ ARM says
"D"; Cardelli and Wegner in their poorly edited article say "E" on page
P and then "F" on page Q;' and so on.

Just avoid making up things in your FAQ, it's beyond your chances.

If you restrict yourself to lists of facts (A says B but C says D, you
can get book/source/document X from Y, ...) then you do a service to
this newsgroup, if not you just provide laughing stock for the 

  * Just a small list of the absurdities:

  objsys> Simply put,

  What is the correct definition of 'object' is highly controversial;
  you cannot simply put yours out as the simply put one, and without
  even justifying it, merely stating it as a fact. Especially if it
  makes no sense. What amazing presumption to sneak your own totally
  bogus definition of a crucial term in a FAQ as if there were an
  established consensus about it!

  objsys> an object is a variable.

  Ah, for sure. So while we see the object i being defined and used in
  these two lines

	  complex i(0.0,1.0);
	  printf("i.im = %f\n",i.im);

  in neither of the following C++ lines

	  const complex i(0.0,1.0);
	  printf("i.im = %f\n",complex(0.0,1.0).im);

  we see any object, in the first because we only see constants (and a
  keyword and a struct name) in the second because there is no variable
  name at all (printf is the name of a user function, complex is that of
  a struct, and im is that of a field accessor function).

  objsys> In classical object-oriented programming, this variable has a
  objsys> type

  Ah really? In Smalltalk 'variables' are not typed at all. Same in many
  other mainstream OO languages. Or am I dreaming that it is 'values' that
  are 'typed' in those languages?

  objsys> a type (called a class)

  Are you so incredibly sure that the type of an object and its class
  are the one and same concept, such that 'type' and 'class' are just
  synonyms?  This would be amazing news to most of the people who have
  been working on formal methods and OO systems.

  objsys> defining its structure and operations (called methods) which
  objsys> may be performed on the object.

  Why ever should they be performed on the object? That is a common
  case, but not necessairly true. A method is commonly closed with
  respect to the environ of the object, but it need not access it at
  all.

  objsys> Classes also define inheritance for objects.

  Ah certainly! Classes don't define an inheritance lattice between
  themselves, no, they define inheritance between objects! So I can say
  that, simply put, object A inherits from object B thanks to class C?
  As far as I know inheritance does not apply to objects except in
  delegation type systems, which are not (yet) the mainstream of OO
  programming; indeed the word 'inheritance' is usually meant to apply
  only to classes, the similar relationship between objects is
  distinctly called 'delegation'.


--
Piercarlo Grandi, Dept of CS, PC/UW@Aberystwyth <pcg@aber.ac.uk>
  E l'italiano cantava, cantava. E le sue disperate invocazioni giunsero
  alle orecchie del suo divino protettore, il dio della barzelletta
Newsgroups: comp.object