Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Eiffel (programming language)
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
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.
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Eiffel (programming language)
(section)
Add topic