Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!cs.utexas.edu!uunet!mcsun!cernvax!chx400!ugun2b!cui!anders From: anders@cui.unige.ch (BJORNERSTEDT Anders) Newsgroups: comp.object Subject: Re: Evaluating "Object-Oriented" Programming Languages Keywords: object-oriented, programming languages, evaluation, bibliography Message-ID: <706@cui.unige.ch> Date: 5 Jan 90 10:25:02 GMT References: <638@ajpo.sei.cmu.edu> Reply-To: anders@cui.UUCP () Organization: University of Geneva, Switzerland Lines: 84 In article <638@ajpo.sei.cmu.edu> eberard@ajpo.sei.cmu.edu (Edward Berard) writes: > HISTORICAL BACKGROUND > >In the very early 1970s, things were simple. There was only one >programming language which called itself "object-oriented," i.e., >Smalltalk ([Goldberg and Robson, 1983]). Further, all that anyone Was Smalltalk really available in the "very early 1970s" ? Speaking from personal experience from the early 80s, I was working with Simula. OO-terminology was certainly used at that time, but as I remember it Smalltalk was not readily available. >A major source of problems in any comparison scheme is the confusion >between concepts and implementations. For example, in Smalltalk, >objects communicate (i.e., work gets done) via "message passing." There is also a confusion between terminology and concepts. The Smalltalk notion of "message passing" (synchronous and blocking) is closer to the normal function call (especially if you have virtual functions like in Simula) than it is to "message passing" in the sense of the actor model of Hewitt. > - Types: Whereas a class defines the structure and > characteristics of its instances, a type defines those > operations in which an object may participate, and under > what circumstances the object may legally participate in > those operations. Types are a relatively new concept in > object-oriented programming. Smalltalk has, in effect, no I would argue that types are an old concept in object-oriented programming... > - Static Versus Dynamic Binding: Binding is the association of > allowable operands (i.e., objects) with operations. Binding This sounds like the binding of actual to formal parameters. What you mean is: Static versus dynamic binding of method. which is the binding of method to a given invocation including operands. > Static binding is usually associated with strongly typed > programming languages, and dynamic binding with weakly-typed > programming languages. Smalltalk and Objective-C support > dynamic binding. You are correct here because you qualify with the first sentence with "usually". Strong typing and "dynamic binding of method" are theoretically orthogonal. > - Message passing: In Smalltalk, work is accomplished by > message passing. Messages have a prescribed format, and are > handled in a specified manner. However, Wegner ([Wegner, > 1987], page 512) observes: "... the term "message passing" > has several different meanings. The first object-oriented > language, Simula, had coroutines, an asynchronous > (quasi-parallel) form of message-passing in which the sender > saves its state and must be explicitly reawakened by a > resume call rather than by an automatic reply from the > receiver. True, but the "normal" way of doing oo-programming in Simula is by invoking functions/procedures on instances of classes, which corresponds closely if not exactly to how it is done in Smalltalk. But I agree that the term "message passing" has degenerated as much as the term OO itself. > Smalltalk and Loops equate message-passing with > remote procedure calls, a synchronous form of > message-passing in which the sender must wait for a reply > form the receiver before continuing. I would just say "procedure call" and not "remote procedure call" when speaking of Smalltalk and Loops which in their standard form do not support distribution. Lets not add the term RPC to the list of terms which have lost meaning. > - types (strong typing). Many people have complained > about Ada's strong typing. This makes the trend > towards more strongly typed object-oriented > programming languages that much more ironic. Uh-Oh, you (Edward Berard) seem to be biased against strong typing. Whether or not strong typing is desirable depends on 1) personal taste and 2) the problem to be solved and its context. I would argue that strong typing (which does not exclude polymorphism) is more important in large and critical applications.