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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,2ea02452876a15e1 X-Google-Attributes: gid103376,public X-Google-Thread: fac41,c52c30d32b866eae X-Google-Attributes: gidfac41,public X-Google-Thread: 1108a1,c52c30d32b866eae X-Google-Attributes: gid1108a1,public From: bobduff@world.std.com (Robert A Duff) Subject: Re: Real OO Date: 1996/04/08 Message-ID: #1/1 X-Deja-AN: 146428505 references: <4j9p3a$uo5@watnews1.watson.ibm.com> <4kbqun$iiv@watnews1.watson.ibm.com> organization: The World Public Access UNIX, Brookline, MA newsgroups: comp.lang.eiffel,comp.lang.ada,comp.object Date: 1996-04-08T00:00:00+00:00 List-Id: In article <4kbqun$iiv@watnews1.watson.ibm.com>, Norman H. Cohen wrote: >Some possible answers: > >(a) It is impossible to write a routine that has such expectations. > [If so, Eiffel is less flexible than Ada.] >(b) The Eiffel translator magically deduces an algorithm for > Corresponding_Parts_Equal that works for the two dynamic types in > question. > [If so, we can stop this discussion now, I'm sold on Eiffel!] >(c) A run-time error results immediately. > [If so, no different from Ada.] >(d) The version of Corresponding_Parts_Equal for the dynamic type of A is > invoked with a parameter that does not have the expected dynamic > type. Depending on the algorithm for that version of the routine, > this may lead indirectly to a run-time error later, or fortuitously > happen to give the right answer (at least for all the cases we tested > so far ;-) ), or give an incorrect answer masquerading as a correct > answer. > [In any of these cases, Ada is more robust.] Norm, you didn't mention (e), something is done at link time. In Eiffel, there's something called "system validity check" or "system goodness check" or some such thing (I can't remember what it's called). It checks, at link time, certain things that *seem* to be holes in the type system, if one is used to thinking only about compile time. >Please enlighten us. Yes, please, perhaps our friends in comp.lang.eiffel would like to enlighten us about system (whatever) checks. Also, Eiffel compilers, unlike Ada compilers, typically support incremental compilation. How does this fit in? Does "link time" disappear, because it's all incremental? How does the system goodness check affect the ability to re-use stuff? - Bob