home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / object / 3222 < prev    next >
Encoding:
Text File  |  1992-08-16  |  6.7 KB  |  143 lines

  1. Newsgroups: comp.object
  2. Path: sparky!uunet!sun-barr!ames!ads.com!saturn!doug
  3. From: doug@monet.ads.com (Doug Morgan)
  4. Subject: Re: O.M() versus M(O) notation
  5. In-Reply-To: pcg@aber.ac.uk's message of 16 Aug 92 18:45:26 GMT
  6. Message-ID: <DOUG.92Aug16200024@monet.ads.com>
  7. Sender: usenet@ads.com (USENET News)
  8. Organization: Advanced Decision Systems, Mountain View, CA 94043, +1 (415)
  9.     960-7300
  10. References: <1992Aug5.162329.22871@ucunix.san.uc.edu>
  11.     <PCG.92Aug12205741@aberdb.aber.ac.uk> <__5mtrq.objsys@netcom.com>
  12.     <PCG.92Aug14170701@aberdb.aber.ac.uk>
  13.     <1992Aug15.124149.28538@m.cs.uiuc.edu>
  14.     <PCG.92Aug16184526@aberdb.aber.ac.uk>
  15. Date: Mon, 17 Aug 1992 04:00:24 GMT
  16. Lines: 125
  17.  
  18. In article <PCG.92Aug16184526@aberdb.aber.ac.uk> pcg@aber.ac.uk (Piercarlo Grandi) writes:
  19.  
  20.    ...
  21.  
  22.    And he also uses the same word for the specification of the semantics of
  23.    those objects. To me, it is quite hard to follow. I really cannot
  24.    imagine why it is so difficult to qualify 'type' with the proper
  25.    adjective at least every now and then, for example:
  26.  
  27. I think that proper terminology is rarely used because the underlying
  28. ideas are shortchanged by the popular OO literature and folklore.  Of
  29. the popular OO books I have looked through, I only remember Meyer's
  30. OOSC as even hinting at the subject with any sort of internal
  31. consistency and abstraction.  Even there, the depth was just enough to
  32. introduce some basic ideas.  Lots of European texts on various formal
  33. methods seem to be quite clear, but are not in what I see as the U.S.
  34. mainstream of the OO culture.
  35.  
  36.    type denotation:    the algebraic structure;
  37.  
  38.    type specification:    a description of the 'type denotation' using
  39.                some suitable formal notation;
  40.  
  41.    type implementation:    an intension of the functions in a 'type
  42.                denotation' expressed in some particular
  43.                notation.
  44.  
  45.    type interface:        a way used to define/invoke the elements of the
  46.                'type implementation' in some particular
  47.                notation.
  48.  
  49.    I would personally use 'type' alone for the 'type denotation', and use
  50.    'specification', 'interface' and 'implementation' on their own with the
  51.    obvious sense.
  52.  
  53. Your personal usage of "type" is better than "type denotation."  If an
  54. adjective is ever needed it should probably be more like "denoted
  55. type" or "type denoted by such and such notation."  This more clearly
  56. carries the meaning that the symbols of the specification denote
  57. objects (mathematical, of course) of some type.  I would extend this
  58. to say that at any one time an instance of a class should also denote
  59. some type.  That is, with the proper context instances and
  60. specification should both denote the same abstract types.  (A running
  61. system as mutating specification?)
  62.  
  63. As an aside, several different denotation functions can apply to one
  64. class instance.  The denotation mentioned above maps instance to type
  65. (a.k.a. state or value).  Another denotation maps to the block of
  66. memory (and perhaps procedures) associated with the instance.  This
  67. computer implementation oriented denotation allows systems to
  68. manipulate instance structures for standard inheritance, memory
  69. allocation, I/O, DB, inspection, etc.  My impression is that the
  70. second denotation so dominates the U.S. OO community (being dominated
  71. by C++, it seems) that suggested improvement to OO techniques (e.g.,
  72. pcg's) will only work their way into completely new languages or
  73. offshoots of low volume languages.
  74.  
  75.    ...
  76.  
  77.    And here we are at one of the crucial points of this discussion. The
  78.    title of this thread is "O.M() versus M(O) notation", and my thesis has
  79.    been that:
  80.  
  81.      it makes a lot of difference which notation is used to describe
  82.      operations on a value
  83.  
  84.    because the notation strongly influences thought processes and actually
  85.    constrains them (cfr. Dijkstra on BASIC), and that in particular the
  86.    'O.M(...)' notation by making 'O' visually special suggests that
  87.    overloading should happen only on the first argument, which is most
  88.    probably a misleading impression, as overloading resolution ought to be
  89.    symmetrical, which is the most "natural" thing.
  90.  
  91. This issue may finally boil down to genetic predispositions and
  92. environment influences.  Some people just see M(O1,O2,...) as fitting
  93. so beautifully into their notions of mathematics, symmetry, Occam's
  94. razor, etc.  that no other notation makes an iota of sense.  Others
  95. just see O1.M(O2,...) as the high point of the new OO-think of
  96. encapsulation, message passing, classes, etc.  Neither group accepts
  97. the the other's view and compromise is out of the question.  (Oh, by
  98. the way, the TRUTH is that the first group is completely correct and
  99. the second is completely misguided.)
  100.  
  101. ...[My summary of a block of text: separation of
  102. interface/implementation/specification is good but not done in today's
  103. OO languages]...
  104.  
  105. I think the goal is wonderful.  A few questions:
  106.  
  107. O Do you have or know of any proposals for a system implementing this
  108.   principle?
  109. O How would this new system handle the fact (?) that specifications
  110.   are most often handled off-line on paper or in someone's head?  How
  111.   would it deal with specifications it can't really "understand" well
  112.   enough to transform to appropriate machine code.  For instance, I
  113.   would like to add "finite" to set to get finite-set (or remove
  114.   finite from finite-set to get just set).  How would this work into
  115.   the ways of combining specifications?  As you say, doing
  116.   specifications right is HARD.  And even if you do them right,
  117.   today's compilers and systems wouldn't be able use them.
  118. O An example?  How about seeing how the new system would address a
  119.   question that pops up on this group every month or two.  The
  120.   question is always how to organize the inheritance of a mutable
  121.   square class instance with three slots and a mutable rectangle class
  122.   instance with four slots.  Now, how would this new system help
  123.   clarify the notions of abstract types (rectangle and square), class
  124.   instances denoting specific types, and different constraints on the
  125.   mutation of instances?
  126. O Could the system simultaneously and cleanly treat class instances
  127.   themselves (if there are such things as classes and instances) as an
  128.   interesting abstract type?  I think this second denotation
  129.   (mentioned above) is needed to solve many efficiency, meta-class,
  130.   and OODB-type problems.
  131.  
  132.    --
  133.    Piercarlo Grandi                   | JNET: pcg@uk.ac.aber
  134.    Dept of CS, University of Wales    | UUCP: ...!mcsun!ukc!aber-cs!pcg
  135.    Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@aber.ac.uk
  136.  
  137. doug
  138. --------------------------------------------------------------------
  139. Doug Morgan, doug@ads.com, (415) 960-7300
  140. Advanced Decision Systems (a division of Booz-Allen & Hamilton Inc.)
  141. 1500 Plymouth St., Mountain View, CA 94043-1230
  142. --------------------------------------------------------------------
  143.