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
|