NICE-ESG-Libs Digest        Tue, 21 Mar 95       Volume 1 : Issue 202 

Today's Topics:
                 A bug in the PELKS and a correction
                               My Vote
                        The current proposals 


NICE Eiffel Standards Group -- Library Committee Mailing List To post to list: NICE-ESG-Libs@atlanta.twr.com To send mail to the Chairman of the committee: NICE-ESG-Libs-chair@atlanta.twr.com Administrative matters (sign up, unsubscribe, mail problems, etc): NICE-ESG-Libs-request@atlanta.twr.com
Date: Mon, 20 Mar 95 18:53:17 PST From: bertrand@vienna.eiffel.com (Bertrand Meyer) Subject: A bug in the PELKS and a correction To: nice.lib@vienna.eiffel.com Copy to: From: Bertrand Meyer Mailer: BOOM Dear colleagues: One of our users has found a bug in the PELKS assertions for `deep_equal'. The problem is the postcondition clause labeled `same_type' which has been introduced in version 6. (It's nice to have a copy with change bars, by the way.) The postcondition reads same_type: Result implies some.same_type (other) This is only correct if `some' is not void. We propose correcting this bug as follows: (1) Adding a new clause both_or_none_void: (some = Void) implies (Result = (other = Void)) (2) Rewriting the offending clause `same_type' as same_type: (Result and (some /= Void)) implies some.same_type (other) We have applied these corrections to the ISE implementation of the library, (since we feel it is better to be correct than standard!). We think these corrections should also be applied to the PELKS. Christine, would you please look at the issue and decide what to do (start a discussion, start a vote on the above correction, accept it as a bug fix without a vote)? Thanks and best regards, -- BM
Date: Mon, 20 Mar 95 17:30:01 PST From: dinov@geneve.eiffel.com (Dino Valente) Subject: My Vote To: NICE-ESG-Libs@atlanta.twr.com Here are my votes: MOTION VOTE ---------------------------|---| LIB95-PAJ-PART_COMPARABLE |NO | ---------------------------|---| LIB95-PAJ-COMPARABLE |NO | ---------------------------|---| LIB95-TWR-HASHABLE |NO | ---------------------------|---| LIB95-TWR-HASHABLE2 |NO | ---------------------------|---| Dino Valente
Date: Mon, 20 Mar 95 18:04:27 PST From: bertrand@vienna.eiffel.com (Bertrand Meyer) Subject: The current proposals To: nice.lib@vienna.eiffel.com Copy to: eiffelgroup Christine_Mingins From: Bertrand Meyer Mailer: BOOM Only today did the ISE team have an opportunity to study in detail the current proposals. I vote NO on all of them and hope the hashing proposals are defeated or delayed, as passing them would be a disaster for the Eiffel community and would essentially kill any hope for an Eiffel library standard in the next two years. The major problem is that no one paid any attention to compatibility with existing implementations. (At least this is the favorable interpretation.) Passing the hashing proposals would break every existing Eiffel system (at least every ISE Eiffel system, but I suspect others as well). Not content with breaking existing systems, the hashing proposal is perverse enough to reuse an existing feature name, `hash_code', thus ensuring that thousands of users will have to write dozens of `select' clauses! This is rather sadistic. This is all the more unacceptable that in the current library there is a trivial way to obtain the desired effect: include in class ANY a featured called e.g. `hashed' (NOT `hash_code'!) which does the job. There will be no standard unless proposers of new facilities show a minimum of respect for other implementors and, more importantly, existing users. The proposals are all the more regrettable that, given some time to devise a suitable transition mechanism, some of the suggested changes do appear technically attractive if (1) they are thoroughly explored theoretically and validated practically by a pilot implementation, (2) the concerns of current users are properly treated and (3) a smooth transition path is charted. But not for vintage '95! The Tower proposals represent the following approach: (A) Use the standards process to introduce sweeping changes from existing implementations. As a result, we may have a beautiful paper standard, but implementations take years to catch up. In the meantime, everyone suffers: implementors who have to change everything all the time and, more importantly, large users who convert, convert and re-convert. This is a subversion of the standards process. Standards are not meant to invent but to codify existing practice. What we are promoting (and everyone I have talked to seems to agree) is the polite and effective approach: (B) Take the subset of current practice that every implementation can include NOW (meaning in the version that will reach users later in 1995) and define it as the library standard, vintage 95. The library committee and NICE should adopt approach (B), the consensus approach; (A), in contrast, is the divisive approach, which can only create endless squabble and, in the end, the failure of the standards process. Approach (B) is realistic today because there is nothing, in the current PELKS, that is known to make it difficult for any vendor to implement. That is why we should take the PELKS and use it as vintage 95. If someone finds an exception to the first sentence in this paragraph, i.e. something that seems to make it difficult to implement for compilers other than ISE's, then he should point it out so that we can discuss it and, if necessary, amend or remove it. This process can take but a few weeks, meaning that we can all have standards-conformant compiler on users' desks IN A FEW MONTHS. After that we should discuss extensions and changes, but discuss them seriously. A proposal of the form ``Here is our new version of hashing, it has no connection whatsoever with what was there before [and, unsaid, it makes it impossible for ISE to provide a smooth transition path to its users], vote yes or no for March 20'' is not the right way to go. The issues are too subtle for e-mail discussions; as Steve Tynor mentioned a few weeks ago we need to have real technical meetings (and we are again offering to host such a meeting in Santa Barbara or Paris, whichever is more convenient to a larger number of people). My feelings about Paul Johnson's proposals are less strong, but I still vote against both of them because they appear unjustified: - On PART_COMPARABLE: the library standard is not a theory of mathematics. It should be minimalist. COMPARABLE is there for a reason: it is needed to describe other, directly useful kernel library classes such as INTEGER, STRING etc. This is not true of partial order relations. If we include them, we should also do the whole of Bourbaki - transitive relations, preorders, symmetric relations, reflexive relations... Where do we stop? - On COMPARABLE (other than the point about min and max for equal values, for which I think either convention can be justified), I disagree with Paul's notion of equality. There is no need for a separate order_equal. I had long discussions on this point with Michael Schweitzer on this point last summer and (although I don't know whether I managed to convince him) I think `order_equal' is just `equal'. More generally these are again pretty big changes which, if at all, should be considered for vintage '96. Let's not reinvent the world; let's codify existing practice so that we can guarantee a basic level of interoperability to our users NOW. And let's show some respect for the installed base. -- BM