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=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable 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: 1108a1,bdaddde464f6e704 X-Google-Attributes: gid1108a1,public X-Google-Thread: 103376,dad65365cb2b3396 X-Google-Attributes: gid103376,public X-Google-Thread: f43e6,bdaddde464f6e704 X-Google-Attributes: gidf43e6,public X-Google-Thread: 1014db,dad65365cb2b3396 X-Google-Attributes: gid1014db,public X-Google-Thread: 109fba,dad65365cb2b3396 X-Google-Attributes: gid109fba,public From: piercarl@sabi.demon.co.uk (Piercarlo Grandi) Subject: Re: The disturbing myth of Eiffel portability Date: 1996/11/29 Message-ID: X-Deja-AN: 201325725 x-nntp-posting-host: sabi.demon.co.uk x-disclaimer: Contents reflect my personal views only references: supersedes: content-type: text/plain; charset=US-ASCII mime-version: 1.0 (generated by tm-edit 7.94) 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: >>> "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 obvious example is ``Algol'', where ALGOL 60 and ALGOL 68 are rather different. 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. 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? 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? 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. 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). 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? 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: piercarl> In this respect Eiffel is rather less attractive; user piercarl> defined Eiffel datatypes are not quite on a par with builtin piercarl> ones either as to syntax (which IMNHO is not important) or piercarl> as to performance (which matters for very fine granularity piercarl> datatypes). piercarl> It is rather significant IMNHO that Eiffel 3 has now piercarl> expanded datatypes, which however small a detail, allows piercarl> for _considerable_ improvements in performance, in piercarl> particular asd to garbage collection. donh> In the case of "Eiffel", they usually mean Eiffel 3. This may well be the case, but it creates confusion... 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 (also, 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). 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. 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. 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". 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-". 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), 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".