Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!columbia!rutgers!clyde!watmath!watnot!watmum!gvcormack From: gvcormack@watmum.UUCP (Gordon V. Cormack) Newsgroups: comp.lang.misc Subject: Re: Object-Oriented vs. Abstract Data Types Message-ID: <786@watmum.UUCP> Date: Wed, 21-Jan-87 23:23:54 EST Article-I.D.: watmum.786 Posted: Wed Jan 21 23:23:54 1987 Date-Received: Thu, 22-Jan-87 06:26:12 EST References: <4000001@nucsrl.UUCP> <3288@milano.UUCP> <147@m10ux.UUCP> <672@unc.unc.UUCP> Organization: U of Waterloo, Ontario Lines: 47 > > Object-oriented programming is a religion that is currently in vogue. > > It adds little to the original class ideas of Simula 67, and the > > abstract data type ideas of Clu (which was inspired by Simula 67). > > > > Really the only thing that Smalltalk and its imitators > > add is dynamic procedure binding and dynamic type checking, which I > > regard as highly undesirable. > Dynamic binding yields considerable advantages over Simula, > including more polymorphic procedures and incremental compilation. > (Those of you out there who have used Smalltalk and/or Lisp systems > know what I'm talking about.) Basically, the only reason *not* to > have dynamic binding is the belief that "it costs too much". With > all the work that has been (successfully) done at making that fast > (method caches, class guessing, etc.) I hope we have put THAT myth > to bed. Method lookup consumes not very much (I remember it as 10%) > of Smalltalk execution time. 10% is a very small price to pay for > the benefits of being able to recompile and relink any procedure into > a running system (~1.5 MB source code) in only a few seconds! 1. The original point is that O-O adds nothing new. Certainly dynamic binding and polymorphism weren't new in O-O. 2. It is highly questionable that dynamic binding and static type checking are compatible. For a turing-machine equivalent language, it is undecidable what messages are sent to what objects. 3. Because of 2., there is a great deal to be gained by static binding/ type checking - namely some verification that the program does something reasonable. 4. Even Lisp programmers, etc., are discovering types - read Milner's paper on ML. 5. It is true that most strongly typed languages are straightjackets; some have great expressive power, flexibility, and polymorphism. 6. Class hierarchies (as in Simula67) give polymorphism without resorting to dynamic anything. 7. I still have not seen a satisfactory definition of O-O. I am not at all sure that one exists. I think it *is* essentially the Simula programming methodology invented 20 years ago by Dahl et al. -- Gordon V. Cormack CS Dept, University of Waterloo, Canada N2L 3G1 gvcormack@mum.waterloo { .CSNET or .CDN } gvcormack@water { UUCP or BITNET }