home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / object / 3321 < prev    next >
Encoding:
Text File  |  1992-08-25  |  17.0 KB  |  362 lines

  1. Newsgroups: comp.object
  2. Path: sparky!uunet!decwrl!csus.edu!netcom.com!objsys
  3. From: Bob Hathaway <objsys@netcom.com>
  4. Subject: Re: O.M(...) vs M(...), and is the Real World O-O?
  5. Message-ID: <t5anrkq.objsys@netcom.com>
  6. Date: Tue, 25 Aug 92 22:06:58 GMT
  7. Organization: Object Systems
  8. References: <1992Aug5.162329.22871@ucunix.san.uc.edu> <KERS.92Aug21150658@cdollin.hpl.hp.com>
  9. Lines: 351
  10.  
  11. In article <KERS.92Aug21150658@cdollin.hpl.hp.com>, kers@hplb.hpl.hp.com (Chris Dollin) writes:
  12. >Sorry, I don't think I am subject to that confusion here. (In fact I
  13. >think the usual way encapsulation is described in OO languages -- with
  14. >all this emphasis on ``keeping the operations in *the* class'' -- is
  15. >another mistake. Hiding names and doing method dispatch are two separate
  16. >things; routinely conflating them is in itself a confusion. In CLOS, the
  17. >equivalent of encapsulation is provided by using the separate namespace
  18. >control mechanism, viz packages. At least that's how I understand it --
  19. >a CLOS person might wish to correct me here.)
  20.  
  21. I don't.  Firstly, encapsulation does not infer hiding.  There are public,
  22. private and protected functions available.  Secondly, I've previously
  23. discussed that packaging isn't even as powerful as something like C++'s
  24. friend mechanism.
  25.  
  26. >|>|.......  The languages here obviously have O.M... notation and use
  27. >|>|multi-methods, they always have.
  28. >|>
  29. >|>They *don't* have multi-methods. They *never* have. Bob, is it possible we
  30. >|>have drastically different notions of what ``multi-method'' means? My notion
  31. >|>is taken from CLOS, on which I'm no expert but I think I understand the
  32. >|>basics.
  33. >|
  34. >|I gave you a reference to Coplien (I though you read it already;-) and he
  35. >|defines multi-methods as simply multiple-polymorphism (as we do).
  36. >>
  37. >The term ``multi-methods'' comes from CLOS (I don't know if it was
  38. >inherited from elsewhere, or not) and means that the action performed is
  39. >selected on the basis of the ``message'' and the (types of) all the
  40. >arguments to that message (there is no distinguished ``receiver'' in
  41. >CLOS). I think we agree on this, at least.
  42.  
  43. Yes, but "multi-methods" now also apply to the O.M ... notation and
  44. O.M ... does not infer using the static types of arguments (see below).
  45. We use this definition and so does Coplien, so I'll present it as a given.
  46. The only real difference, as defined in C++, is the receiver can only
  47. undergo standard conversions (including derived to base casting) and not
  48. user-defined conversions.  
  49.  
  50. >|And I don't like hearing that multi-methods are a superset of OO dispatch.
  51. >
  52. >Not liking it is your problem, because they *are* a superset.
  53. >Conventional OO dispatch is simply the case where a particular argument
  54. >position is selected and the (types of) all other arguments ignored [for
  55. >the purpose of method selection]. This is usually combined with a
  56. >special syntax for method invocation (message sending, whatever).
  57. >Sometimes this is the *only* syntax (and semantics) for invoking
  58. >actions. [Yukk.]
  59.  
  60. This is wrong.  For the fifth time, all dynamic types of all arguments are
  61. used in our systems here with the O.M ... notation and they always have
  62. and IMHO they always should be in any system where this applies.  Coplien
  63. uses the same terminology, that using the dynamic types of all arguments,
  64. with M ... or O.M ...  notation, is called multi-methods.  Please don't get
  65. this wrong again, its getting ridiculous.  You can say: "We in CLOS don't
  66. like others using the O.M ... notation to use the term "multi-methods" for
  67. their multiple-polymorphism even though this is becoming a standard practice."
  68. But I think a single term is preferred to two.
  69.  
  70. >|They are much weaker from my point of view because they aren't encapsulated
  71. >|within a class.
  72. >
  73. >This is not an issue of *dispatch*, but an issue of *hiding*. CLOS
  74. >provides two independant mechanisms to do two different jobs. Naturally
  75. >using only one of them will not give you the power of both.
  76.  
  77. But you haven't shown that M ... is a superset of O.M ... in terms of
  78. dispatch.  And most OO languages provide both notations anyway.
  79.  
  80. >|Please keep in mind we used to allow both forms and rejected the idea because
  81. >|of poor protection.
  82. >
  83. >[Which ``both forms'' were these? 
  84.  
  85. Allowing methods to be declared inside or outside of a class.
  86.  
  87. >Which ``we'' was this? Which
  88.  
  89. At this company.  We have a first and second generation OO language.
  90.  
  91. >``idea''?] The protection offered by OO languages is twofold -- name
  92. >hiding, and automated method selection. CLOS has both. [What it
  93. >*doesn't* have is static typing. This is another independant issue, and
  94.  
  95.   [I thought CLOS specializers provide for static typing with parameters.]
  96.  
  97. >I think it has no bearing on the original topic -- O.M(...) vs M(...) --
  98. >so I propose we don't follow it up here.]
  99.  
  100. With class encapsulation the correct use of an object can be guaranteed
  101. and the integrity of objects insured but without it (CLOS programs)
  102. this isn't true because a function can be declared anywhere and have
  103. complete access to all of a class' representation, at least if this
  104. new package construct (which I haven't ever seen used or defined for
  105. CLOS) is forgotten in even one place.
  106.  
  107. >Just to check, Bob, do you still think that Smalltalk, C++, and Simula
  108. >*have* multimethods? [I don't dispute that you can code up some sort of
  109. >equivalent. But you could do *that* in C, or assembler, or Scheme.] If
  110. >so, could you explain why?
  111.  
  112. I've already pointed out they don't; to repeat myself: Smalltalk doesn't
  113. because its statically typeless and C++ doesn't because it is statically
  114. typed.  I've designed and implemented more powerful facilities than
  115. these myself, please take my word for it when it comes to static and
  116. dynamic typing of any kind!
  117.  
  118. >It ``always works'' because it's embedded in a programming language in
  119. >which you can code up the alternative (multi-method) dispatch yourself.
  120. >It's ``not sufficient'' because when you want multi-methods, they're not
  121. >there, and you have to write the machinery out (several times).
  122. >Multi-methods are better, because receiver-oriented dispatch is just a
  123. >special case.
  124.  
  125. This is wrong since we have had true multi-methods (or multiple-polymorphism)
  126. with the O.M ... for some time (in the languages used and developed at this
  127. company).
  128.  
  129. >|OO still supports operators (including overloading), just look at C++. This
  130. >|is an AWM, however.
  131. >
  132. >Yes, C++ supports compile-time overloading (and run-time OO dispatch) --
  133. >losing out on the unification. Sad.
  134.  
  135. I won't comment on your terminology but I think you'll be interested in my
  136. C++ superset when it comes out (should be sometime next year).  It beats
  137. CLOS and Self (but runs infinitely faster) and obviously beats C++ (but
  138. is infinitely more powerful).  Put that in your cereal bowl with strawberries!
  139.  
  140. >...
  141. >Suppose I write a set of Pop procedures which perform actions. The
  142. >``doer'' of the action (let's say they are known to be the doer because
  143. >their energy level gets drained, their experience level goes up,
  144. >observers are informed that the doer has done something, etc) 
  145.  
  146.   This sounds like a world model.
  147.  
  148. >is held in the permanent (global) variable ``doer''.
  149.  
  150.   This is not, this is just terrible.  There may be many doers.
  151.   When going AI, stay AI...
  152.  
  153. >...
  154.  
  155. More contrivances.  Yes, other schemes can work but the scheme I presented
  156. is natural, complete, and works well.  Anything could be used but the
  157. instructional 2nd person is excellent for algorithms and has its place
  158. (as it always has.  Maybe you're the person who never reads the
  159. instructions:-)
  160.  
  161.  
  162. -- Philosophy mode now ON ---------------------------------------------
  163.  
  164.   Chris goes on to say that the world isn't made up of objects and
  165.   interactions aren't objectively broken down into objects and their
  166.   associated actions.
  167.  
  168. I believe the world is made up of objects and their behavior is meaningful.
  169. OO can be used to describe the world even at the most elementary level - an
  170. atom class, a proton class, an energy class, ... - and OO provides a good
  171. way of modeling it.  I believe Chris falls into a vocal minority because
  172. of the ubiquitous and voluminous amount of literature and opinion against
  173. him.  A few academic arguments seem to make their way against OO but I
  174. don't see them gaining popular acceptance in the software engineering
  175. community.  Chris then makes a good point, the same one that Grace Hopper
  176. used to make, that perhaps there should several languages with one for each
  177. branch of science and that special purpose machines should be built for them
  178. such as the IBM machines which were built to handle the kinds of numbers
  179. usually found in the data processing industry.  I used to disagree with this
  180. philosophy because of a feared Tower of Babel problem and because I assumed
  181. the descriptive power of something such as OO would or could be made
  182. sufficient for any domain, and perhaps it is.  I am reconsidering this point;
  183. however, since I've now seen and heard it in many places and from many
  184. people.
  185.  
  186. Perhaps the phrase: 
  187.  
  188.   The World is Object-Oriented.
  189.   
  190. is better served by:
  191.  
  192.   The world can be described as Object-Oriented.
  193.  
  194. Chris and a few others may disagree but the consensus in the literature
  195. clearly shows the above to be the majority view and theirs to be a minority.
  196.  
  197. >...
  198. >If that's all you mean, I can't really quarrel with it. But if I call
  199. >forces ``functions'' and particles ``values'', I can claim that the real
  200. >word is function-oriented.
  201.  
  202. But particles can change state in the real world, the functional model
  203. doesn't capture this naturally/objectively.
  204.  
  205. >|>If you take this view, suppose that the cup shatters into a
  206. >|>lay-persons-million pieces. Where's the cup? From whence came the pieces?
  207. >|Broken into its constituent parts.  The pieces came from its mass.
  208. >
  209. >But a cup doesn't *have* ``constituent parts'' (unless you count the --
  210. >human, abstract -- separation into ``handle'' and ``container''). The
  211.  
  212. Yes it does.  The molecules and so on making up its mass are its aggregate
  213. parts.  They were there to begin with and they still exist now but in a
  214. different form.  This is the most natural case of aggregation I can think
  215. of.
  216.  
  217. >|Depends on your domain of discourse: RWM, MWM, or AWM.  The latter two
  218. >|usually don't worry much about dynamics and space much.  But the former
  219. >|does.
  220. >
  221. >You'll have to explain these terms in more detail, I'm afraid.
  222.  
  223. First, these terms were made up by me for my own purposes because I am not
  224. aware of any other such delineations.  I asked for comments on them some
  225. time ago but didn't get any responses.  In this terminology, the real-world
  226. model is like VR, plain and simply modeling and simulating the real world
  227. in much the same way that we see it around us.  Mental worlds are like
  228. semantic networks: they can think, reason, and are conscious.  We are mental
  229. worlds.  Abstract worlds are abstractions.  Mental worlds are abstractions
  230. too but are extremely complex.  I find the distinctions useful since simple
  231. programming is typically used for abstract world modeling and something
  232. more elaborate is appropriate for RWMs and MWMs.  All of these can be
  233. described by object-oriented techniques but in different ways.  I think all
  234. of your examples fit cleanly into these models.
  235.  
  236. >|But I still believe in an objective reality.  We may have trouble seeing it
  237. >|but its there none the less.  Maybe I should take up theoretical physics
  238. >|again.  Maybe even solve the unified field theorem; then I'd have a strong
  239. >|argument now wouldn't I;-)
  240. >
  241. >I believe in an objective reality, too, and that it's hard to see. Where
  242. >we disagree is that I don't think that the notion of object-oriented
  243. >that appears in OOPLs is particularly appropriate.
  244.  
  245. Yes, we disagree here.  I believe OO can be used to describe the real world
  246. in terms close to an objective reality.  For instance, if I invented a
  247. language based on the real-world I could start with an OO description
  248. and simply enforce everything in the language instead of thru classes.
  249. There would still be objects but not much would change.
  250.  
  251. >Finding a unified field theory (hard; you don't just stub your toes on them,
  252. >or have a feeling about them in your gut) would surely be a triumphant
  253. >*denial* of the ``objectness'' of the real world).
  254.  
  255. More disagreement from me.  I still think you're in the vocal minority;
  256. maybe we should have a comp.object poll?  Send email if you'd like to
  257. follow thru on this; the results should prove most interesting.
  258.  
  259. >|Ok, I've wondered about alternatives to the behavioral interface myself.
  260. >|I may have jumped the gun here but I don't see better alternatives.  I
  261. >|still question the lack of encapsulation, maybe its just a bias, maybe not.
  262. >
  263. >The lack of encapsulation in what? -- I've lost track. There is precious
  264. >little encapsulation in the real world (light cones and black holes come
  265. >to mind as examples), and I've already stated my view (above, and
  266. >earlier messages) that [a] in CLOS, encapsulation is provided by
  267. >name-hiding, and [b] encapsulation is a property we choose to give to a
  268. >language in order to make aspects of it easier to handle.
  269.  
  270. Encapsulation is a property we give to classes to insure abstraction.
  271. Encapsulating a "weak" (CLOS) class and it methods within a package is
  272. the same as "strong" (classical OO) classes but I've shown in previous
  273. postings the former is even weaker than C++'s classes and friends!
  274.  
  275. >|Actually, its physical dynamics working on aggregate objects.
  276. >
  277. >Is this an admission that the ``stack'' doesn't know how to push?
  278.  
  279. Yes in the RWM domain.  A stack that can push in the AWM domain 
  280. is useful because it is a behavioral abstraction.
  281.  
  282. >|Whats the alternative?  Discussions of alternatives would be constructive,
  283. >|not just pointing out perceived differences with reality or even our ability
  284. >|to determine a models closeness with it.
  285. >
  286. >The language of physics *is* an alternative -- when you want to talk
  287. >physics.
  288.  
  289. Good point.  But abandoning a general-purpose tool in favor of many
  290. special purpose ones requires strong justification.
  291.  
  292. >|>So, at the very least, your objects are autonomous processes -- unlike the
  293. >|>object models supported by Smalltalk, C++, and CLOS?
  294. >|These are weak models.  Try Ada.
  295. >
  296. >A better example would be CSP, if we want to talk processes. It's not
  297. >clear to me now what your notion of (programmatic) notion of object is
  298. >-- I had assumed it was something like a Smalltalk object, but now it
  299. >appears to be an Ada process. OK, we can give some sort of interface
  300. >specification to a process.
  301.  
  302. Or Argus or distributed Smalltalk or Dragoon.  But I wouldn't use
  303. the term "process" here.  The term "Active Object" is preferred by me.
  304. All the Actor models apply too.
  305.  
  306. >Earlier, you argued that ``naturalness'' was a key attribute in deciding
  307. >how the world was structured. Now you say that some things, while
  308. >``natural'' (treating a push as an object) are in a different domain to
  309. >the others. How does one tell which is which?
  310.  
  311. If its in your head its in a MW.  Your head is in the RW (hopefully:-).
  312. The programs you're writing are probably dealing with an AW, seen and
  313. designed by a MW and exist in some representation in the RW.  If your
  314. programs deal with MW's they are MWMs.  If they deal with reality as we
  315. see it they are RWMs.  If they deal with abstractions they are AWMs.  I
  316. find these distinctions useful and wouldn't mind hearing about perceived
  317. flaws.  They are just personal contrivances for my hobbies.
  318.  
  319. [By my terminology, your not so real mathematical real-world simulations
  320. fall into the AWM but approach a RWM.  Perhaps they lie somewhere in between.]
  321.  
  322. >``Contact''? What does ``contact'' mean for a magnetic field? I was
  323. >rather under the impression they extended to infinity (unless confined).
  324.  
  325. Any object occupying space affected by a magnetic field.  Obviously
  326. proximity effects the strength.  A unified field theorum is necessary
  327. for better understanding, modeling and simulation.
  328.  
  329. >Well, it's wonderfully metaphorical, but I don't think it *explains*
  330. >anything -- I expect an explanation to have more detail, more power, to
  331. >allow me to make predictions, when it's being presented as a Grand World
  332. >Model.
  333.  
  334. Well, I'll just consult with Einstien on this one (that should be
  335. interesting).  I meant to show the object-oriented techniques can be
  336. used to describe reality and not to present a complete model.  [It should
  337. be easier if the new super-collider gets continued funding and gets finished
  338. on schedule in 1999 but I'm not going to claim to be an expert on this
  339. subject; as a software engineer going spacebuilding I would consult with
  340. one.]
  341.  
  342. >|>|Yes, we can give attributes to a flock of birds even if thats not the
  343. >|>|way the real world is broken up.  This is the subjective side, not the
  344. >|>|objective side of objects.
  345. >|>
  346. >|>It's not that it's *subjective*, it's that it's *abstract*. (Subjective would
  347. >|>suggest that it's private to the individual.)
  348. >|
  349. >|You're confusing AWs with MWs (to which I was referring).
  350. >
  351. >That's what your model says. Do you have references?
  352.  
  353. Nope, my terminology is completely contrived because I'm not aware of any
  354. other distinguishing between these domains.  Relevant references are welcome.
  355. To reiterate, I was (perhaps unclearly) referring to a mental (or cognitive)
  356. model in ones head and not some programmatical abstraction; you drew the
  357. distinction but mistook the former for the latter.
  358.  
  359. Regards,
  360. bob
  361. objsys@netcom.com
  362.