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: <753@cui.unige.ch> Date: 10 Jan 90 11:21:09 GMT References: <638@ajpo.sei.cmu.edu> <706@cui.unige.ch> <644@ajpo.sei.cmu.edu> Reply-To: anders@cui.UUCP () Organization: University of Geneva, Switzerland Lines: 115 In article <644@ajpo.sei.cmu.edu> eberard@ajpo.sei.cmu.edu (Edward Berard) writes: >In article <706@cui.unige.ch>, anders@cui.unige.ch (BJORNERSTEDT Anders) writes: >> In article <638@ajpo.sei.cmu.edu> eberard@ajpo.sei.cmu.edu (Edward Berard) writes: EB>Smalltalk. (See [Kay, 1977].) However, Smalltalk is significantly EB>different from Simula. Specifically, it contains features which are EB>"lacking" in Simula, and many consider these "missing" features EB>essential to an object-oriented language. The main difference between Smalltalk and Simula I see as being on the system level, not on the language semantics level. Smalltalk is interpreted by an abstract machine and uses dynamic linking, simula is strongly typed, statically linked (but still has dynamic binding through virtuals). Simula also contains features which are lacking in Smalltalk (strong typing, nested classes, and coroutine stuff which I dont regard as having much to do with object orientation, etc). Anyway I dont want to get into a useless debate on the differences and merits of Simula and Smalltalk. I was mainly concerned with the history of "oo-concepts", and strong typing. When you say that there are "missing" features in Simula which some regard as essential to an object-oriented language, I would be interested in hearing what those features are. Not because I want to enter the black hole of how we should define "OO", but because I suspect that many people are not familiar with Simula and possibly do not understand what features it has. EB>I will grant anyone that "message passing" has a multitude of EB>meanings. What is important is that the objects which populate a EB>system have some means of communicating with each other (and the EB>outside world). To engage in a discussion of what constitutes "true EB>message passing," or the "best message passing" is to accept an EB>invitation into a black hole. The point I was trying to make is that Smalltalk and Simula have essentially the same model of message passing, method invocation, procedure call, or whatever you want to call it. The Simula model is a bit more elaborate since you can have either dynamic or static binding whereas in Smalltalk you can only have dynamic binding. Smalltalk is more flexible because of the lack of strong typing, not because of any fundamentally different message passing model. EB>> > those operations. Types are a relatively new concept in EB>> > object-oriented programming. Smalltalk has, in effect, no AB>> AB>> I would argue that types are an old concept in object-oriented programming... EB> EB>Here you have me, sir. By not being more precise than I was, I have EB>left myself wide open. I could argue your point by citing a classic --------Deleted discussion on definition of typing------------------ I think you misunderstood me. I was not trying to be an obnoxious philosopher claiming that Smalltalk is typed in some sense. I agree that typing is a "new" topic with respect to Smalltalk. What I meant was simply that Simula is strongly typed (according to all reasonable definitions of strong typing (give me a break here)). and hence types are not a new concept in OOP. EB>> > Static binding is usually associated with strongly typed EB>> > programming languages, and dynamic binding with weakly-typed EB>> > programming languages. Smalltalk and Objective-C support EB>> > dynamic binding. AB>> AB>> You are correct here because you qualify with the first sentence with AB>> "usually". Strong typing and "dynamic binding of method" are theoretically AB>> orthogonal. EB> EB>You will find many people who will disagree with you on this point. 1- Strong typing/Static binding. pascal/normal operations in simula etc. 2- Strong typing/Dynamic binding. Virtuals in simula. 3- Untyped/ Static binding. C functions. C is typed but checking is weak 4- Untyped/ Dynamic binding. Smalltalk So the two are not only theoretically orthogonal, I have given you practical examples of all four possibilities. Now how can someone disagree with the theoretical independence between strong typing and dynamic binding of methods ? Case 3 may be a bit constructed, but this is because its usefullness is questionable, not because it is theoretically impossible. EB>For example, I also received another opinion on this same section of EB>my original article: EB> EB> "It seems to imply that strongly-typed languages are never EB> associated with dynamic binding: but C++, Trellis, Eiffel, and EB> Modula-3 are clearly strongly-typed and support dynamic EB> binding. (One place where binding may have been discussed is EB> in the functional programming community, where a function EB> variable is "dynamically bound" in contrast to a static EB> function reference. Even C supports dynamic binding through EB> function pointers.)" This is not another opinion. It supports my point. ----------a lot of stuff deleted------------- EB>You get half credit (;-)). I am biased. (Horrors! :-)) However, I am EB>biased in your direction. I tend to agree strongly with you that EB>strong typing is more important in large and critical applications. Ok good, but going back to the original topic again "evaluation of OOPLs", I don think strong typing should be regarded as a discriminating feature of OOPLs. Even the highest authority there is on the subject of language classification, Wegner himself :-) classifies both Simula and Smalltalk as OO. Thus the fact that a language is classified as OO says relatively little about how useful it is in a particular problem situation. --------------------------------------------------------------------- Anders Bjornerstedt E-mail: anders@cuisun.unige.ch Centre Universitaire d'Informatique 12 rue du Lac, CH-1207 Geneva --------------------------------------------------------------------- Tel: 41 (22) 787.65.80-87 Fax: 41 (22) 735.39.05 Home: 41 (22) 735.00.03 Telex: 423 801 UNI CH ---------------------------------------------------------------------