Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Eiffel (programming language)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Design goals== Eiffel emphasizes [[Declarative programming|declarative]] statements over [[Procedural programming|procedural]] code and attempts to eliminate the need for bookkeeping instructions. Eiffel shuns coding tricks or techniques intended as [[program optimization]] hints to a [[compiler]]. The goals are to make the code more readable, and to facilitate concentrating on the important aspects of a program without getting bogged down in implementation details. Eiffel's simplicity is intended to promote simple, extensible, reusable, and reliable answers to computing problems. Compilers for computer programs written in Eiffel provide extensive optimizing techniques, such as automatic [[inline expansion]] (inlining), that eliminate part of the optimizing burden. ===Background=== Eiffel was originally developed by Eiffel Software, a company founded by [[Bertrand Meyer]]. ''[[Object-Oriented Software Construction]]'' contains a detailed treatment of the concepts and theory of the object technology that led to Eiffel's design.<ref>{{cite book |last1=Meyer |first1=Bertrand |author1-link=Bertrand Meyer |date=1997 |title=Object-Oriented Software Construction |edition=2nd |publisher=[[Prentice Hall]] |isbn=0-13-629155-4}}</ref> The design goal behind the Eiffel language, libraries, and programming methods is to enable programmers to create reliable, reusable software modules. Eiffel supports [[multiple inheritance]], [[genericity]], [[Polymorphism (computer science)|polymorphism]], [[Encapsulation (computer programming)|encapsulation]], type-safe conversions, and [[parameter covariance]]. Eiffel's most important contribution to [[software engineering]] is [[design by contract]] (DbC), in which [[Assertion (software development)|assertions]], [[precondition]]s, [[postcondition]]s, and [[class invariant]]s are employed to help ensure program correctness without sacrificing efficiency. Eiffel's design is based on object-oriented programming theory, with only minor influence of other [[programming paradigm]]s or concern for support of legacy code. Eiffel formally supports [[abstract data type]]s. Under Eiffel's design, a software text should be able to reproduce its design documentation from the text itself, using a formalized implementation of the "Abstract Data Type". ===Implementations and environments=== [[EiffelStudio]] is an [[integrated development environment]] available under either an [[Open-source license|open source]] or a commercial license. It offers an object-oriented environment for [[software engineering]]. EiffelEnvision is a plug-in for [[Microsoft Visual Studio]] that allows users to edit, compile, and debug Eiffel projects from within the Microsoft Visual Studio IDE. Five other [[Open-source software|open source]] implementations are available: "The Eiffel Compiler" tecomp; Gobo Eiffel; [[SmartEiffel]], the GNU implementation, based on an older version of the language; [[LibertyEiffel]], based on the SmartEiffel compiler; and [[Visual Eiffel]]. Several other programming languages incorporate elements first introduced in Eiffel. [[Sather]], for example, was originally based on Eiffel but has since diverged, and now includes several [[functional programming]] features. The interactive-teaching language Blue, forerunner of [[BlueJ]], is also Eiffel-based. The [[Apple Media Tool]] includes an Eiffel-based Apple Media Language. ===Specifications and standards=== The Eiffel language definition is an international standard of the [[International Organization for Standardization|ISO]]. The standard was developed by [[European Computer Manufacturers Association|ECMA International]], which first approved the standard on 21 June 2005 as Standard ECMA-367, Eiffel: Analysis, Design and Programming Language. In June 2006, ECMA and ISO adopted the second version. In November 2006, ISO first published that version. The standard can be found and used free of charge on the ECMA site.<ref>ECMA International: Standard ECMA-367{{snd}} Eiffel: Analysis, Design and Programming Language 2nd edition (June 2006); available online at [https://ecma-international.org/publications-and-standards/standards/ecma-367/ https://ecma-international.org/publications-and-standards/standards/ecma-367/]</ref> The ISO version<ref>International Organization for Standardization: Standard ISO/IEC DIS 25436, available online at [http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=42924&ICS1=35&ICS2=60&ICS3=]</ref> is identical in all respects except formatting. Eiffel Software, "The Eiffel Compiler" tecomp and Eiffel-library-developer Gobo have committed to implementing the standard; Eiffel Software's EiffelStudio 6.1 and "The Eiffel Compiler" tecomp implement some of the major new mechanisms—in particular, inline agents, assigner commands, bracket notation, non-conforming inheritance, and attached types. The [[SmartEiffel]] team has turned away from this standard to create its own version of the language, which they believe to be closer to the original style of Eiffel. Object Tools has not disclosed whether future versions of its Eiffel compiler will comply with the standard. [[LibertyEiffel]] implements a dialect somewhere in between the [[SmartEiffel]] language and the standard. The standard cites the following, predecessor Eiffel-language specifications: * Bertrand Meyer: ''Eiffel: The Language'', Prentice Hall, second printing, 1992 (first printing: 1991) * Bertrand Meyer: ''Standard Eiffel'' (revision of preceding entry), ongoing, 1997–present, at Bertrand Meyer's ETL3 page, and * Bertrand Meyer: ''Object-Oriented Software Construction'', Prentice Hall: first edition, 1988; second edition, 1997. * Bertrand Meyer: ''Touch of Class: Learning to Program Well with Objects and Contracts'', Springer-Verlag, 2009 {{ISBN|978-3-540-92144-8}} lxiv + 876 pages Full-color printing, numerous color photographs The current version of the standard from June 2006 contains some inconsistencies (e.g. covariant redefinitions){{Citation needed|date=October 2010}}. The ECMA committee has not yet announced any timeline and direction on how to resolve the inconsistencies.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)