About Eiffel 



Eiffel is a systematic approach to the construction of quality software, including a language,
a method, libraries, and development environments. 

The language was designed in 1985 by Bertrand Meyer of ISE. The current language
version is Eiffel 3, described in detail in Meyer's book "Eiffel: The Language" (Prentice Hall,
1992). Many other books are available on the language and the method. The language is
non-proprietary. 

The aim of Eiffel is to improve the quality of software systems and the productivity of the
development process. It particularly promotes the production of software that has the
following qualities: reliability (absence of bugs) extendibility (ease of change) reusability
(reliance of libraries of packaged components) and portability (adaptability on many
platforms with full source compatibility). Eiffel also makes it possible to produce compilers,
such as ISE's, which generate extremely efficient code. 

As a language Eiffel is a "pure" object-oriented language (arguably the most systematic
application of object-oriented principles in existing languages) based on a small number of
powerful concepts: 

   * Seamless development: Eiffel is applicable to the entire lifecycle, from analysis and
     high-level design to implementation and maintenance, providing a single conceptual
     framework throughout the software process. 

   * Classes, serving as the sole basis for both the module structure and the type system. 

   * Inheritance for classification, subtyping and reuse. 

   * A careful and effective approach to multiple inheritance (renaming, selection,
     redefinition, undefinition, repeated inheritance). 

   * Assertions for writing correct and robust software, debugging it, and documenting it
     automatically. 

   * Disciplined exception handling to recover gracefully from abnormal cases. 

   * Static typing with no loopholes in the type system for safety. 

   * Dynamic binding for flexibility and safety. 

   * Genericity, constrained and unconstrained, for describing flexible container
     structures. 

