From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,dad65365cb2b3396 X-Google-Attributes: gidfac41,public X-Google-Thread: 109fba,dad65365cb2b3396 X-Google-Attributes: gid109fba,public X-Google-Thread: 1014db,dad65365cb2b3396 X-Google-Attributes: gid1014db,public X-Google-Thread: f43e6,bdaddde464f6e704 X-Google-Attributes: gidf43e6,public X-Google-Thread: 1108a1,bdaddde464f6e704 X-Google-Attributes: gid1108a1,public X-Google-Thread: 103376,dad65365cb2b3396 X-Google-Attributes: gid103376,public From: donh@syd.csa.com.au (Don Harrison) Subject: Re: The disturbing myth of Eiffel portability Date: 1996/11/29 Message-ID: X-Deja-AN: 201376068 sender: news@syd.csa.com.au x-nntp-posting-host: dev50 references: organization: CSC Australia, Sydney reply-to: donh@syd.csa.com.au newsgroups: comp.lang.eiffel,comp.lang.ada,comp.lang.c,comp.lang.c++,comp.object,comp.software-eng Date: 1996-11-29T00:00:00+00:00 List-Id: Piercarlo Grandi writes: :>>> "donh" == Don Harrison writes: : :donh> I think you'll find that when people refer to languages without :donh> stating which version, they are typically referring to the current :donh> incarnation. : :The incarnation of the language or that of the language's name? For it :is often the case that the same name is used to label rather different :languages, not more or less minor revisions of the same language. The language. Yes, this only applies to languages with a single line of descendants (eg. Ada, Eiffel). Where the evolutionary tree branches, it only makes sense to speak of specific variants. [As an aside, it's tempting to suggest that the quality of an original language is inversely proportional to the number of branches from it (not necessarily with the same name) but this is overly simplistic. A single evolutionary path may indicate that the original was so good that there were few 'improvements' that could be made or it may have been that the language definition was tightly controlled]. :The obvious example is ``Algol'', where ALGOL 60 and ALGOL 68 are rather :different. Yes, that's why "Algol 68" is used for ALGOL 68 and "Algol" is used to mean ALGOL 60. :But the difficulty exists even when the current language is a :a greatly expanded superset of the previous language, but the name has :not been changed. Both cases are somewhat common, and the Eiffel-Eiffel :3 distinction is one of many example. : :Therefore the assumption above involves considerable difficulties. Indeed. :When one says ``C++'', which version of C++ is implied? The one with or :without namespaces? The one with or without exception handling? And when :one says ``Smalltalk''? And which version of ``FORTRAN'' is current? And :nnwhen someone writes ``Ada is an OO language'', one should understand :that phrase wrt Ada [83] or Ada 95? In the case of "Ada", they mean Ada95. :What about Pascal? Pascal (either :1st or 2nd edition), or ISO Pascal? Is ``C++'' the current ``C'', as it :incldues the latter as a subset? Hasn't C evolved separately? This is the real issue, IMO. BTW, I thought C++ *wasn't* a superset of C - at least, that's what Wiener & Pinson says. :For Eiffel at least the situation is clear; there are three languages, :Eiffel (which was never called Eiffel 1 AFAIK, even if occasionally the :name is used, even by myself), Eiffel 2 and Eiffel 3. Few languages would have a version 1 as their designers probably thought at the time they had created something perfect. :) :Eiffel and Eiffel 2 are fairly similar, so not much is lost by using the :same name for both; but Eiffel 3 is so different from Eiffel (being a :greatly "expanded" :-) superset, and the things in the superset being so :dramatically different in philosophy) that I think using the name of the :latter to indicate the former is a bit of a strain (similarly for :Sather, for which the version number is even more essential, as it has :been for quite a while a research language, and has undergone even more :frequent evolution). While you may be strictly correct in using the term "Eiffel" for the original language, everyone else uses it to mean Eiffel 3. Words in natural languages change their meanings over time, typically through popular misuse. Language names are no different in this regard, so "Eiffel" today means Eiffel 3 whereas in 1985, it meant the original Eiffel. Using "Eiffel" to mean the original Eiffel (as defined in OOSC?) will only cause confusion, IMO. :Consider as an analogy the label ``Modula'': yes, Modula, Modula 2 and :Modula 3 are somewhat similar languages, but Modula 3 is rather :different from the other two (which are not compatible either way); what :should one understand when one writes ``Modula''? The current :``version''? Which one? Modula is usually understood to mean the original language called "Modula" and its derivatives are specifically named. :donh> They will typically only mention a specific version if :donh> distinguishing between them (usually to update their :donh> knowledge). : :But Eiffel has got no version number -- Eiffel 2 and Eiffel 3 have got :it. You may have not noticed that in my article I was careful to Use :Eiffel where I meant Eiffel, and Eiffel 3 where I meant Eiffel 3, as :evident in the contrast in two consecutive paragraphs: Yes, you expressed yourself with admirable precision. :) :donh> In the case of "Eiffel", they usually mean Eiffel 3. : :This may well be the case, but it creates confusion... Only if you use the term archaically. :) :donh> If they mean OOSC Eiffel, : :But there is no such thing as OOSC Eiffel: what is described in OOSC is :the language called "Eiffel", period, with no qualifiers whatsoever That may well be. However, everyone will know what you are talking about but ... :there are now _two_ ``OOSC Eiffels'': I haven't yet seen the :second edition of OOSC, but I imagine it will no longer be using Eiffel :but Eiffel 3 for examples). No doubt, but I expect the term "Eiffel" will be used to mean the current version of the language. : I personally regard the title of Betrand Meyer's book "Eiffel the : language" as a bit of a misrepresentation: for the vast changes : between Eiffel and Eiffel 3 reflect some negative experience with : Eiffel (and Eiffel 2), and blurring the distinction between Eiffel 3 : and Eiffel seems a way to sweep such past problems under the carpet, : as if there were a continuity that is not quite there. Well, there is continuity in that the term "Eiffel" has been used the whole time to indicate the current version of a progressively improving language. :There are vast : differences between the various ``C++''s too, and I cringe when people : speak of ``C++'' as if it were one and not at least four successive : rather different languages, but none imply regrets such as those : evident in the evolution from Eiffel to Eiffel 3. Sadly, we humans are less than perfect. :) :I personally try to use typographical conventions to indicate use of the :specific vs. the generic term; for example Eiffel denotes the language :called "Eiffel", and ``Eiffel'' means any of the languages called :"Eiffel", "Eiffel 2", "Eiffel 3". Okay, we'll know what you mean. :I am especially keen on using such a convention when discussing :``Smalltalk'', in part because there are so many different and often :incompatible languages whose name includes the word "Smalltalk", and :also because there is _no_ language called "Smalltalk" (while there is :one called "Eiffel"), as the original ``Smalltalk''s were all, wisely, :tagged with names of the form "Smalltalk-". Yes, that was helpful. :donh> they are graciously informed that some things have changed since :donh> then. :) : :Perhaps a better assumption would be to use the language's own full name :(ALGOL 60 instead of Algol), Yes, that would help. :or use some typographical convention to :indicate ``fuzzy'' names, or simply to assume that the version, if :missing is the one, if any, for which the phrase in which it appears :makes sense; for exmaple something like "C++ does not have multiple :inheritance" should be taken to refer to "C++ 1.0". Yes, reading in context is always beneficial. Don. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Don Harrison donh@syd.csa.com.au