dsill@ark1.nswc.navy.mil (Dave Sill) (10/25/89)
Is it just me, or does anyone else find disturbing the number queries of the form: Does anyone know anything about object-oriented <Topic>? Where recent instantiations of <Topic> include: analysis design parsers security testing Is object orientation such a novel approach that we'll have to relearn everything we've already figured out? If so, is it really worth the effort? Admittedly, I'm an object-oriented novice. I've read various object-oriented articles in Byte and Computer Language, and I even took a one-day tutorial in C++ at USENIX. But I've never written an object-oriented program, and it isn't obvious to me what makes object-orientation so profoundly different, and presumably, better. Dave Sill (dsill@relay.nswc.navy.mil)
hallett@pet3.uucp (Jeff Hallett x5163 ) (10/26/89)
In article <190@ark1.nswc.navy.mil> Dave Sill <dsill@relay.nswc.navy.mil> writes: >Is object orientation such a novel approach that we'll have to relearn >everything we've already figured out? If so, is it really worth the >effort? Interesting question. The answer is, sometimes. The object-oriented paradigm basically groups data into classes and assigns class methods that they may use to manipulate that data and communicate with the rest of the world (yeah, its loose, but shut up :^) The concept is not really so revolutionary, but the true object-oriented systems add a lot that ordinary procedural systems cannot have. However, even procedural systems can benefit from object-oriented analysis even if the program is not implemented in an object-oriented language. An object-oriented design is a design that naturally grows from performing the analysis - from the procedural standpoint, such a design is only useful if it best addresses the problem. On the other hand, it is quite in vogue to throw "object-oriented" in front of some normal term and get a great new buzzword or show off in front of your friends. IMHO, "object-oriented security" is just such a term. Always keep one thing in mind, object-oriented approaches are just really different ways of examining a problem. It provides a more data-driven view than standard, control-driven procedural methodologies. If the approach adds insight to your problem or significantly shows information about a problem not previously noted, then an object-oriented study of the problem may actually spawn a new topic of interest. Otherwise, it probably isn't worth your time. Only you can judge. -- Jeffrey A. Hallett, PET Software Engineering GE Medical Systems, W641, PO Box 414, Milwaukee, WI 53201 (414) 548-5163 : EMAIL - hallett@gemed.ge.com "Your logic was impeccable Captain. We are in grave danger."
anders@cui.unige.ch (BJORNERSTEDT Anders) (11/09/89)
In article <1959@tukki.jyu.fi> sakkinen@jytko.jyu.fi (Markku Sakkinen) SAKKINEN@FINJYU.bitnet (alternative) writes: >In article <984@castle.ed.ac.uk> nick@lfcs.ed.ac.uk (Nick Rothwell) writes: >-That doesn't help (does it?). A number languages have abstract data types, >-which have been around for longer than OOP. > >OOP began with Simula 67 around 1967, but Simula had no 'abstract data type' >concept (it has encapsulation facilities today). >Has there really been some programming language with ADT's before 1967? Yes. I think the simula-67 common base language definition already had the class concept, but not the HIDDEN & PROTECTED features. This means that you could construct and use ADT's using the class concept, but could not prevent other programmers from poking at internal representation. In fact the way I had understood the "history of concepts" is that the idea of ADT's emerged in the 70's and evolved (in part not entirely) from one way of using the simula class concept. The paper: B.H. Liskov and S. Zilles, "Programming with abstract data types," ACM SIGPLAN Notices, vol. 9, 1974. makes a REF to Simula. --------------------------------------------------------------------- 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 ---------------------------------------------------------------------
nick@lfcs.ed.ac.uk (Nick Rothwell) (11/09/89)
In article <352@m1.cs.man.ac.uk>, mario@r3 writes: >1. No side effects? I defy you to show me a useful program that has > no side effects :-). More seriously, doesn't ML have a reference > type? Ok, what I said was actually inconsistent (too much typing with brain in neutral). In fact, ML allows you to build objects with state and hence functions with side-effects. In practice, the largest proportion of a program is purely functional with a few reference variables to tie things up at the top. I'm currently working on a 10000 line ML interpreter which has around a half-dozen references (one or two timestamp generators and a top-level variable to hold the environment between runs), everything else being purely applicative. Since assignment is only permitted for explicitly created reference objects (unlike a lot of LISPs), this seems a good compromise. >> (Both of these open the doors to computer-assisted reasoning >> about program correctness.) >So has Pascal. So has 6502 machine code. So what? What I should have said is something far less controversial... :-) because 99.9% of this ML program is side-effect free, it's quite easy to reason informally about what it does, since no component is holding any kind of hidden state - all the interfaces and functions can be trusted to do behave referentially transparently, and return results based only on their input values. I think that 100% applicative programs have difficulty dealing with the outside world (I/O and so on), and start to get rather contorted. >Hmm, I wonder what what these Smalltalk expressions are if not >functionals and generators ... > double := [ :f | [ :x | f value: (f value: x)]]. > someObscureCollection do: [ :each | each process ] I personally find a powerful type system (polymorphism, parameterised types, abstraction) to be pretty essential to make the most of higher-order functions, accumulating parameters, continuations and so on. I'll grant that other people (like the Scheme people) seem to have no problem programming "in the saddle", but that requires run-time debuggers and so on, and it's a different way of working. Nick. -- Nick Rothwell, Laboratory for Foundations of Computer Science, Edinburgh. nick@lfcs.ed.ac.uk <Atlantic Ocean>!mcvax!ukc!lfcs!nick ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ Fais que ton reve soit plus long que la nuit.
db@lfcs.ed.ac.uk (Dave Berry) (11/17/89)
Some of the claims made in this group for OO languages compared to other languages seem a bit odd. For example, ADTs aren't only a feature of OO languages. If Simula 67 is OO then there exists an OO language that doesn't support ADTs. Another example was a recent article saying that a queue ADT only had to be implemented once. This is an example of polymorphism, which can be implemented in several ways, many of which aren't OO. One example that people pointed out was parameterised ADT's, These aren't a new concept either. I don't think that either OO or ADTS "came first" to programming languages. ADT's and the other features of a modern OO language seem to be linked strands of development of programming languages during the 70s. As one strand of this development, ADTs (including parameterised ADTs) have been used in several specification languages, such as CLEAR and ASL. All this makes me wonder which "other languages" people are comparing OO languages with. Perhaps if we were more specific in this respect we would reach a clearer idea of which features are OO and which features are related but useful. (I would guess that this confusion arises because OO languages are the first class of modern languages to make a big hit outside research labs, and that a lot of people are only seeing these features for the first time in OO languages. Which is another Good Thing about OO languages!) My opinion is that the main feature of an OO language is that objects contain information about their class. The effect of this is that we can build collections of objects of different classes, call a member function of an arbitrary object of that collection and get the correct function for that class. In other words, dynamic binding of functions (as opposed to dynamic binding of variables, as in old lisps). Some people have said that objects contain their member functions. This isn't true of any OO language I've seen. In these languages, classes contain member functions and each object (intuitively) contains a pointer to its class. If this seems nitpicking, consider the possibility of an OO language with functions as values. In such a language member functions would bear the same relation to function values as class attributes to object attributes. Inheritance and/or delegation are obviously important concepts too. In a statically typed language, inheritance as subtyping is needed to allow dynamic binding. In dynamically typed languages it doesn't seem strictly necessary to me, and seems to be used more as a way of reusing code (not that this isn't important). Ralph Johnson mentioned some time ago that Emerald is an OO language without inheritance. So my definition of an OO language would be "classes + dynamic binding of functions". with the footnote that inheritance is required for this in statically typed languages and damn useful anyway in dynamically typed ones. Of course, I'm probably wrong ... Dave Berry, Laboratory for Foundations db%lfcs.ed.ac.uk@nsfnet-relay.ac.uk of Computer Science, Edinburgh Uni. <Atlantic Ocean>!mcvax!ukc!lfcs!db
pcg@emerald.cs.aber.ac.uk (Piercarlo Grandi) (11/18/89)
In article <352@m1.cs.man.ac.uk> mario@r3.cs.man.ac.uk writes: Piercarlo Grandi states: > 3) most FP languages have and emphasize functionals and generators > (non nested control flow), that make many complex program > structures much simpler, and they are not as used or available > (regrettably) in OO languages, and this accounts for *a lot* of > the difference (even if functionals and generators are not that > easy to formalize, let me observe :->). Hmm, I wonder what what these Smalltalk expressions are if not functionals and generators ... double := [ :f | [ :x | f value: (f value: x)]]. someObscureCollection do: [ :each | each process ] Oh yes, Smalltalk has some good support. But, but, of all people you are the one to know that blocks in Smalltalk have some disagreeable property that greatly limits their usefulness as closures/etc... And where is detach/resume? (well, in processes, but this seems a bit overdone). Anyhow, I could argue that any OOL with dynamic binding was using functionals all the time: every reference to an object also implicitly references its methods. Uhmmm. This is straining things a bit.... :-> Those who program in Smalltalk already use closures an awful lot, and even a form of continuation (albeit somewhat restricted) that to me is much nicer than than most mechanisms built into other languages for non-stack-based control flow. As to that, Simula 67 was *the* thing as to coroutines, generators, etc... (resume and detach); indeed I could argue that object oriented features were invented and added to Simula I/67 precisely because non nested flow control is essential to writing simulations. On the other hand, OO programmers in languages other than Simula 67 (and a few others, like in some way Smalltalk) do not have resume/detach, or are not familiar with funtionals. Too bad. It need not be the case. Well, I ten to agree that Smalltalk for one has nice FP like technology, no doubt inspired by Interlisp among others; but unfortunately Smalltalk is not what most people know as an OO language. The likes of Object Pascal, C++, Ada (argh!) are associated in the public's mind with OO programming. -- Piercarlo "Peter" Grandi | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk Dept of CS, UCW Aberystwyth | UUCP: ...!mcvax!ukc!aber-cs!pcg Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk
mario@r3.cs.man.ac.uk (11/21/89)
In article <PCG.89Nov18135245@emerald.cs.aber.ac.uk> Piercarlo Grandi writes: > Oh yes, Smalltalk has some good support. But, but, of all people > you are the one to know that blocks in Smalltalk have some > disagreeable property that greatly limits their usefulness as > closures/etc... And where is detach/resume? (well, in processes, > but this seems a bit overdone). All of the serious problems have been fixed in the 2.4 and 2.5 releases from ParcPlace. Blocks are now reentrant, can have their own temporaries, and access them through proper scoping mechanisms. Unfortunately, they are still not full continuations (this was probably asking a bit much), and the implementation of non-local returns is still not Blue Book, but on the other hand there is a Lisp-like dynamic-unwind available in 2.5. > Those who program in Smalltalk already use closures an awful > lot, and even a form of continuation (albeit somewhat restricted) > that to me is much nicer than than most mechanisms built into > other languages for non-stack-based control flow. > > As to that, Simula 67 was *the* thing as to coroutines, > generators, etc... (resume and detach); indeed I could argue that > object oriented features were invented and added to Simula I/67 > precisely because non nested flow control is essential to writing > simulations. Continuations are more powerful than coroutines; you can implement coroutines using continuations. The Blue Book semantics for blocks also allows you to do it (I can send you some example code if you want), but the ParcPlace implementations don't. I hope this will be fixed, and continuations added, in a Smalltalk-of-the-future. The following papers are recommended reading; they demonstrate the elegance and power of first-class continuations: @incollection{FriedmanHaynesKohlbecker84, author = "Daniel P. Friedman and Christopher T. Haynes and Eugene Kohlbecker", title = "Programming with Continuations", pages = "263-274", publisher = springer, year = 1984, volume = "F8", series = "NATO ASI Series", editor = "P. Pepper", booktitle = "Program Transformation and Programming Environments" } @article{HaynesFriedman87, author = "Christopher T. Haynes and Daniel P. Friedman", title = "Embedding Continuations in Procedural Objects", journal = toplas, volume = 9, number = 4, pages = "582-598", year = 1987, month = oct } @article{HaynesFriedmanWand86, author = "Chistopher T. Haynes and Daniel P. Friedman and Mitchell Wand", title = "Obtaining Coroutines with Continuations", journal = "Computer Languages", volume = 11, number = "3/4", pages = "143-153", year = "1986" } > Well, I ten to agree that Smalltalk for one has nice FP like > technology, no doubt inspired by Interlisp among others; but > unfortunately Smalltalk is not what most people know as an OO > language. The likes of Object Pascal, C++, Ada (argh!) are > associated in the public's mind with OO programming. And more's the pity. Mario Wolczko ______ Dept. of Computer Science Internet: mario@cs.man.ac.uk /~ ~\ The University USENET: mcvax!ukc!man.cs!mario ( __ ) Manchester M13 9PL JANET: mario@uk.ac.man.cs `-': :`-' U.K. Tel: +44-61-275 6146 (FAX: 6280) ____; ;_____________the mushroom project___________________________________
jtr@cs.exeter.ac.uk (Jason Trenouth) (11/25/89)
>>>>> On 7 Nov 89 04:34:51 GMT, weiner@novavax.UUCP (Bob Weiner) said: Bob> I would like to commend to anybody's attention BETA . . . Bob> Could anyone provide a short summary of BETA and its key innovations Bob> over other OOPLs? An description of BETA appears in: @InCollection{kristensen:beta, author = "B. B. Kristensen and O. L. Madsen and B. Moller-Pederson and K. Nygaard", title = "The {Beta} Programming Language", booktitle = "Research directions in object oriented programming", publisher = "MIT Press", year = "1987", editor = "B. Shriver and P. Wegner", } Its claim to fame is that it supports many diverse programming constructs with one underlying abstraction mechanism. Procedures, functions, data-types, classes, objects, etc are all implemented via something they call a _pattern_. Control and data structures are both defined using the same syntax. Very appealing idea and it might be a great boon to teaching programming. They also have something to say on the subject of concurrency. Borrowing a term from the other discussion, I believe that its a _non-orthogonal_ language. Hopefully someone who knows more about Beta will have posted by the time this reaches the net, but just in case! JT -- ______________________________________________________________________________ | Jason Trenouth, | JANET: jtr@uk.ac.exeter.cs | | Comp. Sci. Dept., Exeter Univ., | UUCP: jtr@expya.uucp | | Devon, EX4 4PT, UK. TEL: (0392) 264061 | BITNET: jtr%uk.ac.exeter.cs@ukacrl|
scc@cl.cam.ac.uk (Stephen Crawley) (11/27/89)
Dave Berry writes: [... stuff deleted ...] > My opinion is that the main feature of an OO language is that objects > contain information about their class. The effect of this is that we > can build collections of objects of different classes, call a member > function of an arbitrary object of that collection and get the correct > function for that class. In other words, dynamic binding of functions > (as opposed to dynamic binding of variables, as in old lisps). [...] > So my definition of an OO language would be > "classes + dynamic binding of functions". > with the footnote that inheritance is required for this in statically > typed languages and damn useful anyway in dynamically typed ones. GRRRR ... I wish people would stick to the well established definitions of terms like "object-oriented" and not go around inventing new & incompatible ones for no good reason! .. GRRRR Dave Berry is just plain wrong. First, inheritence does not give dynamic binding in a static language; inheritence + virtual operations gives dynamic binding! Second, Dave's new "definition" of OO excludes languages that are currently recognised as OO according to the accepted definitions. > Of course, I'm probably wrong ... You said it!!! -- Steve
sakkinen@tukki.jyu.fi (Markku Sakkinen) (11/27/89)
In article <1673@gannet.cl.cam.ac.uk> scc@cl.cam.ac.uk (Stephen Crawley) writes: >Dave Berry writes: >[...] >> So my definition of an OO language would be >> "classes + dynamic binding of functions". >> with the footnote that inheritance is required for this in statically >> typed languages and damn useful anyway in dynamically typed ones. > >GRRRR ... > >I wish people would stick to the well established definitions of terms >like "object-oriented" and not go around inventing new & incompatible >ones for no good reason! > >.. GRRRR > "Well established" indeed! It looks to me that rather everybody who has published something on OOP has his/her definition (explicit or implicit) that is at least a little different from everybody else's. Of course, I have my own too. Peter Wegner's often-cited paper at OOPSLA'87 tries to define an "ascending sequence" of language categories: object-based, class-based (every object has a class), object-oriented (inheritance added). Dave Berry's definition is not so remote from this. On the other hand, there are people who argue that classes should be abolished in OOP! (Incidentally, they have not convinced me, but neither do I fully share Wegner's views.) Probably most people in this field will tolerate calling at least some classless languages, such as David Ungar's Self, "object-oriented". >[...] Markku Sakkinen Department of Computer Science University of Jyvaskyla (a's with umlauts) Seminaarinkatu 15 SF-40100 Jyvaskyla (umlauts again) Finland
nick@lfcs.ed.ac.uk (Nick Rothwell) (11/27/89)
In article <1673@gannet.cl.cam.ac.uk>, scc@cl (Stephen Crawley) writes: >I wish people would stick to the well established definitions of terms >like "object-oriented" and not go around inventing new & incompatible >ones for no good reason! Such as? I've seen no definition of "object oriented" which would rule out Dave's description above. I've read the first 5 or so chapters of Meyer's book, and everything he describes as characterising OO programming, and the benefits, applies equally well to the Standard ML Module system, which isn't object oriented (or is it?). >-- Steve Nick. -- Nick Rothwell, Laboratory for Foundations of Computer Science, Edinburgh. nick@lfcs.ed.ac.uk <Atlantic Ocean>!mcvax!ukc!lfcs!nick ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ "You're gonna jump!?" "No, Al. I'm gonna FLY!"
scc@cl.cam.ac.uk (Stephen Crawley) (11/30/89)
> In article <1673@gannet.cl.cam.ac.uk>, I wrote: >> I wish people would stick to the well established definitions of terms >> like "object-oriented" and not go around inventing new & incompatible >> ones for no good reason! Nick Rothwell replied: > Such as Wegner's taxonomy for example. OK so he made some mistakes in his 1987 OOPSLA paper, but he has apparently fixed this in later versions of the taxonomy. At any rate it is a good place to start. I thought Modula-3 was a (Wegner) OO language that had no dynamic binding, but on reading the report, I find that I mis-remembered. ML would not recognised by many (most?) researchers as OO because does not have an inheritence mechanism. Me ... I don't think inheritence is such a great idea ... but I'm prepared to live with the accepted definitions ... so that we can put aside silly arguments about what OO means and talk about something useful. The only other sane alternative is for everyone to agree that OO means absolutely nothing, and invent a new bunch of words! Either way, new definitions of OO are counter-productive. -- Steve
db@lfcs.ed.ac.uk (Dave Berry) (11/30/89)
In article <1115@castle.ed.ac.uk> I wrote: >Some people have said that objects contain their member functions. This >isn't true of any OO language I've seen. In these languages, classes >contain member functions and each object (intuitively) contains a pointer >to its class. Some people have kindly pointed out that there are object oriented languages in which objects really do contain their member functions, e.g. Emerald, Display Postcript and (possibly) Self. Dave Berry, Laboratory for Foundations db%lfcs.ed.ac.uk@nsfnet-relay.ac.uk of Computer Science, Edinburgh Uni. <Atlantic Ocean>!mcvax!ukc!lfcs!db "leIsANewEntertainment:GuerillaWarStruggleIsANewEntertainment:GuerillaWarStrug"
ewan@cs.washington.edu (Ewan Tempero) (12/01/89)
In article <1673@gannet.cl.cam.ac.uk> scc@cl.cam.ac.uk (Stephen Crawley) writes: >Dave Berry writes: [... stuff deleted from both...] >> So my definition of an OO language would be >> "classes + dynamic binding of functions". >> with the footnote that inheritance is required for this in statically >> typed languages and damn useful anyway in dynamically typed ones. > >GRRRR ... > >I wish people would stick to the well established definitions of terms >like "object-oriented" and not go around inventing new & incompatible >ones for no good reason! While I tend to agree with this sentiment, I also think that the "established definition" of object-oriented is...misleading. Judging by what I read in the literature and in this newsgroup, most people think "object-oriented" means "has classes" and/or "has inheritence" (Wegner didn't help with his OPSLA'87 paper). Now, as definitions go, this would be perfectly acceptable if the same people didn't also think that if the language doesn't have these features then it isn't a good language (and can't have anything to do with objects) [yes I'm generalizing, but I've met this attitude often enough that it's worth discussing] So, let me say what features I think a "good language with objects" should have. I should warn you that all this is in terms of building and MAINTAINING large systems. (a) Ways to create objects (b) Ways to manage objects (c) no non-object constucts [ill-defined I know, maybe I'll say something later] Languages such as C++ and Smalltalk use classes for (a) and (b). C++ fails on (c) [someone claimed that instance variables in Smalltalk can be referred to directly in a "non-object" like manner..I wasn't sure what this meant exactly but if true then Smalltalk fails on (c) too] However classes are the only way to do things. You don't need a class to create objects--just provide an explict mechanism in the language (which I'll call an "object constructor") to do this. You don't need classes to manage the objects either. Afterall, what kind of management do you want? You basically just want to know what "kind" of object you've got and what you can do to it. A type system will do this just fine. Some people will argue that classes are just types. Well that's partially true, but many people think classes also provide code reuse and that's a completely separate mechanism. So I prefer to use "type" when I mean "describes behaviour" and "class" when I mean "describes implementation." If you're uncomfortable with the notion of a language with objects not providing code reuse [depending on what you mean by code reuse--I'm meaning the ability to take pieces of code already written and use them in building something new without using cut-and-paste in and editor] then see a paper by Raj and Levy in ECOOP'89, which describes how to do software reuse in a language-with-objects that is strongly-typed and doesn't have classes. --ewan
twl@brunix (Ted "Theodore" (W) Leung) (12/02/89)
In article <10013@june.cs.washington.edu> ewan@june.cs.washington.edu (Ewan Tempero) writes: > (a) Ways to create objects > (b) Ways to manage objects > (c) no non-object constucts [ill-defined I know, maybe I'll > say something later] So what makes a language that supports these features any different from a language that is based purely on abstract data types? In the absence of code-sharing/grouping mechanisms, what distinguishes an object from an ADT? This opens up the age old question of "what is an object", which will probably cause this group to go into conniptions. I don't think that labelling all the features with the right object-oriented whatever is what's needed. I think that we need to get good definitions of what the essential language elements are and try to understand their interactions in the language design space. -------------------------------------------------------------------- Internet/CSnet: twl@cs.brown.edu | Ted "Theodore" Leung BITNET: twl@BROWNCS.BITNET | Box 1910, Brown University UUCP: uunet!brunix!twl | Providence, RI 02912
ewan@cs.washington.edu (Ewan Tempero) (12/02/89)
-Ted >me In article <21986@brunix.UUCP>, twl@brunix (Ted "Theodore" (W) Leung) writes: -In article <10013@june.cs.washington.edu> ewan@june.cs.washington.edu -(Ewan Tempero) writes: -> (a) Ways to create objects -> (b) Ways to manage objects -> (c) no non-object constucts [ill-defined I know, maybe I'll -> say something later] -So what makes a language that supports these features any different -from a language that is based purely on abstract data types? This is a good question but I'm going to wimp out and not answer it directly (for now, anyway). My "definition" was only intended for a discussion on whether "classes" were required for OO languages, that is, it was to be taken in the context of OO languages only (afterall, I didn't define what an object was so that's the only context that makes sense...if sense is to be made from what I wrote). Which brings me to:- -In the -absence of code-sharing/grouping mechanisms, what distinguishes an -object from an ADT? The point I was trying to make, was that there is nothing inherent in objects that relates to code-sharing mechanisms. I read somewhere that it would be possible to put environment support on top of Modula-2 (or was it Ada?) that would allow things of the form NewModule.NewFunction = OldModule.OldFunction + stuff [this is very hazy and I don't have a reference for it. Does anyone?]. This is essentially what Simula does. As I have already said, there are languages that I think anyone would say provide objects and ways to manipulate them, but don't have code-sharing. They are also based purely on ADTs (so OO implies ADTs, at least). If you are going to insist that code-sharing mechanisms must be present then I think "object" is a misnomer. -This opens up the age old question of "what is an -object", which will probably cause this group to go into conniptions. :-) But if we can't discuss that here, where do we? :-) What I'm trying to do, is to answer exactly this question, without the baggage of code sharing (or concurrency, or anythings else). I think the concept of "object" exists independently and, once we have a better understanding of what this concept is, we can worry about the other stuff. -I don't think that labelling all the features with the right -object-oriented whatever is what's needed. I think that we need to -get good definitions of what the essential language elements are and -try to understand their interactions in the language design space. ...ahem. Yes, I agree. You said it better... --ewan
marc@dumbcat.UUCP (Marco S Hyman) (12/03/89)
In article <21986@brunix.UUCP> twl@boojum.UUCP (Ted "Theodore" (W) Leung) writes:
In the
absence of code-sharing/grouping mechanisms, what distinguishes an
object from an ADT? This opens up the age old question of "what is an
object", which will probably cause this group to go into conniptions.
Simple. An object is an ADT that has had its encapsulation broken by the
evils of inheritance.
// marc
(For the humor impared: This is a joke.)
--
// Marco S. Hyman {ames,pyramid,sun}!pacbell!dumbcat!marc
billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu (William Thomas Wolfe, 2847 ) (12/03/89)
From ewan@cs.washington.edu (Ewan Tempero): > The point I was trying to make, was that there is nothing inherent > in objects that relates to code-sharing mechanisms. I read somewhere > that it would be possible to put environment support on top of > Modula-2 (or was it Ada?) that would allow things of the form > NewModule.NewFunction = OldModule.OldFunction + stuff [this is very > hazy and I don't have a reference for it. Does anyone?]. There is a product called "Classic Ada" (available from Software Productivity Solutions, SPS@radc-softvax.arpa) which provides exactly this: it permits Ada software developers to use inheritance and dynamic binding in object-oriented Ada designs. The code produced is totally standardized, compile-it-anywhere, 100% portable Ada. A number of other vendors are jumping into this market as well, pending the inclusion of object-oriented facilities in Ada 9X. Bill Wolfe, wtwolfe@hubcap.clemson.edu
schaerer@unizh.UUCP (schaerer) (12/05/89)
References: <2426@umbc3.UMBC.EDU> <190@ark1.nswc.navy.mil> <1561@novavax.UUCP> <76915@linus.UUCP> <984@castle.ed.ac.uk> <1959@tukki.jyu.fi> <1115@castle.ed.ac.uk> <1673@gannet.cl.cam.ac.uk> <10013@june.cs.washington.edu> <21986@brunix.UUCP> <131@du
lsr@Apple.COM (Larry Rosenstein) (12/07/89)
In article <PCG.89Nov18135245@emerald.cs.aber.ac.uk> pcg@emerald.cs.aber.ac.uk (Piercarlo Grandi) writes: >unfortunately Smalltalk is not what most people know as an OO >language. The likes of Object Pascal, C++, Ada (argh!) are >associated in the public's mind with OO programming. This is sad but true. Although one must keep in mind that the use of the terms "most people" and "public" refer to the average computer user, and not people in CS departments, people who attend OOPSLA, etc. O-O languages were largely ignored in the popular computer press until Microsoft and Borland introduced versions of Object Pascal, and committed to supporting OOP in their environments. Since then there have been floods of articles about OOP in publications like InfoWorld, MacWorld, etc. At one would expect, a lot of these articles contain mis-information. For example in the Object Pascal competition between Microsoft and Borland, the press has portrayed Borland's language as "better" because they allow both virtual & non-virtual methods (a la C++). This is despite the fact that their language (in my opinion) is badly designed in places. On the bright side, this new interest in OOP leads to several funny articles and letter. In the June 19 InfoWorld is the following (shamelessly excerpted) letter to the editor. (As background, InfoWorld ran a series of aritcles about OOP, and this letter responds to one of them.) "First is concept of combining code and data into a single 'object.' Though I agree that this can simplify programming, the added overhead and duplication of code for each data object can vastly compound one of the most frustrating problems facing computer users today -- that of programs too big for available memory." [followed by a disussion of TSR's, "tight" coding, etc.] Of course, I'm being unfair to the writer of the article, because he later does make some valid points about discussing OOP separately from graphics interfaces. But it is humorous, nevertheless. -- Larry Rosenstein, Object Specialist Apple Computer, Inc. 20525 Mariani Ave, MS 46-B Cupertino, CA 95014 AppleLink:Rosenstein1 domain:lsr@Apple.COM UUCP:{sun,voder,nsc,decwrl}!apple!lsr