Towards an Eiffel Standard

April 2005

Some readers of EiffelWorld will probably have heard of the international standardization effort currently proceeding around Eiffel. Here is the story.

A standard provides critical protection for users of a technology: a long-term guarantee of stability and availability. For the Eiffel standard we decided to go through ECMA, an international organization based in Switzerland (http://www.ecma-international.org). ECMA is known in the industry as the originator of many standards that lie at the core of computer technology, from specifications of such everyday devices as CDs and DVDs to ISDN interoperability and holographic information storage systems. ECMA is also the host for the Common Language Interface (CLI) standards originating with Microsoft .NET. In 2001 we were invited by Microsoft to join the CLI process, in which Eiffel Software engineers, in particular Emmanuel Stapf, played an instrumental role (ensuring for example, as an aside, that the .NET genericity mechanism would be reasonable enough to support Eiffel's genericity). We were impressed by the ECMA style of standard development; so it was natural that we would approach ECMA, together with representatives of Eiffel users and other implementers, for standardizing Eiffel. The effort started in April of 2002 and the standard draft ("Eiffel Analysis, Design and Programming Language") was submitted to ECMA almost exactly three years later.

Anyone who has even superficially observed a standards process knows how bureaucratic and tedious it can be. You have to produce heaps of paper documenting your every move, attend endless meetings, address everyone's comments, responses to the comments and responses to the responses. And this is only within your country. After you have managed to pass a national standard, you (or your grandchildren, for by that time you and your children from both your first and second marriages may all be retired) realize that nothing short of an International Standards Organization (ISO) standard will interest anyone whose opinion matters. So you start again, but at the planetary level this time, making sure not to offend the representative of Mittel-Unter-Appenzell or forget mentioning the favorite control structure of the delegate of Eastern Laponia. Not the most exciting career path for a not-yet-technically-comatose software professional.

ECMA is run quite differently. It started out as a Computer Manufacturers Association, though no one today wants to confess to the original meaning of the E, and although a non-profit is run in a business-oriented style. This does not mean any decrease in rigor, but a focus on getting results, and getting them at a speed compatible with the pace of the computer industry. ECMA achieves this by being a membership-based organization,which any company can join, and also universities as associates. Member companies want results -- standards --, not years of travels and paperwork. Best of all, ECMA has "fast-track" status with ISO, allowing its products to be promoted to ISO standards through a much accelerated process. That's what we hope will happen for the Eiffel standard.

We are not there yet; the standard has just been submitted, for consideration at the ECMA General Assembly in June. If it is approved there, it's on to ISO and the galaxy.

The Eiffel Standard is a major effort. The committee -- made of representatives of Eiffel Software, SmartEiffel, AxaRosenberg, ETH Zurich, Monash University, ENEA/Generic, EMC, plus observers from a host of companies including another Eiffel compiler vendor which is not yet a member -- has worked extensively over the three years.

About 8 people have been intensively active; with 15 three-day meetings this is already about 360 person-days, a figure that must be at least tripled to account for phone conferences -- for the past several weeks some of us were skyping almost every evening --, email discussions, other interactions, and of course writing up the whole thing.

Most standard committees take a strictly stabilizing approach: consolidate what's accepted, don't invent. We decided to be bolder, taking advantage of the innovativeness of the Eiffel community. The resulting language is, in my opinion, incomparably better than what we had before. Major improvements include:

                 - A full-fledged conversion mechanism (which Eiffel Software
                 users have been able to enjoy, for the largest part of its
                 facilities, for several releases already), providing a great
                complement to the conformance mechanism of object-oriented
                programming.

                - New flexibility in the genericity and inheritance mechanisms,
                in particular through non-conforming inheritance.

                - Numerous simplifications (we added a number of facilities,
                but also cleaned up many others and removed dead wood).

                - Notational extensions allowing the reuse of traditional
                mathematical notations, now given their full object-oriented
                meaning; for example you can use a [i] for array access, or for
                that matter for access to any structure, and even
                a [i] := a [i] + 1 as a mere synonym for a procedure call.

                - New solutions to reliability risks; for example Eiffel will
                be the only major language to offer a guarantee that in a
                call x.f (args) the target x will never be void at run time,
                removing a major source of crashes, which continue to threaten
                even statically typed languages. The same techniques should
                also remove the "catcalls" arising from covariance.

              - A more flexible exception mechanism, allowing finer control
              of exceptions.

              - Extended interfaces to other languages, with a fully
              standardized mechanism for including C and C++ inline code.

              - Throughout the language, countless generalizations, useful
              ideas and constructs being made available in a broader and more
              consistent way.

This is just a very partial list. In the next few months and forthcoming releases of EiffelStudio you will see many more details.

Such an ambitious effort will undoubtedly cause questions and initial criticism. It's very hard to convey immediately the result of three years of work, with painful discussions of hundreds of topics, having often devoted hours to the resolution of a minute issue or very rare special case. And of course no such effort can be perfect; we expect that problems will be found. The submission is not the end of the process and there is room for future revisions. We will devote considerable effort to explaining the language changes as clearly and precisely as possible.

As always, backward compatibility and the stability of user investment is at the center of our concerns (after all, we are major Eiffel users ourselves, with a huge investment in the technology, and a constant concern to preserve that investment). Plainly speaking, no one wants to break existing code. It is essential to remember here -- for example when you start reading the description of the new mechanisms -- that even when a change looks incompatible with the earlier version this doesn't mean it will make code stop from working. The compiler should and will provide both the old and the new forms; there's almost no case in the language definition for which they can't be both accommodated. You will be given ample time to update your code, several years if needed, although we think you'll like the new mechanisms enough to want to take advantage of them. Migration aids will be available to support this process.

Eiffel was designed to be the best general-purpose language for developers intent on building high-quality, maintainable, reusable, extendible production systems from small to large and very large. A major upgrade of the technology took place -- fairly smoothly -- in the mid-nineties; quite naturally, another leap is about to occur, ten years later. It will be planned, managed and controlled, allowing those who use Eiffel to keep their edge on everyone else in the industry, and preserve the value of their Eiffel investments.

--Bertrand Meyer
 

 

Bookmark and Share