Eiffel (programovací jazyk)

Eiffel
Vznik1986[1]
VývojářEiffel Software
Webeiffel.org
Přípona souboru.e

Eiffel je v informatice název pro objektově orientovaný programovací jazyk standardizovaný podle mezinárodní normy ISO. Je navržen s ohledem na rozšiřitelnost, znovupoužitelnost a spolehlivost kódu tak, aby byl co nejvíce efektivní při programování. Programovací jazyk má široké spektrum využití. V akademickém prostředí je používán pro výuku principů programování a v průmyslu jako vývojová platforma. Dále je používán v kosmonautice, finančnictví, počítačových hrách a v dalších odvětvích. Eiffel byl původně navržen společností Eiffel Software, která se zpočátku jmenovala Interactive Software Engineering (ISE) a byla založena Bertrandem Meyerem. Od roku 1986, kdy se tento programovací jazyk používá, mnoho společností vytvořilo pro Eiffel vývojová prostředí.

Návrh jazyka úzce souvisí s metodou programování Eiffel. Mnohé postupy použité v Eiffel našly své uplatnění v jazycích Java, C# a dalších. Nové nápady jsou dále začleňovány do jazyka a to hlavně prostřednictvím normalizace ECMA/ISO.

Charakteristika

[editovat | editovat zdroj]

Mezi klíčové vlastnosti jazyka Eiffel patří:

  • automatická správa paměti, obvykle prováděná pomocí garbage collectoru
  • dědičnost včetně vícenásobné dědičnosti a dalších vlastností zavedených za účelem bezpečnější dědičnosti
  • objektově orientovaná struktura programu, kde základní jednotky tvoří třídy
  • design podle smlouvy je úzce spojen s ostatními jazykovými konstrukcemi
  • vázané a nenucené generické programování
  • jednotný typový systém manipulující hodnotovou i referenční sémantikou, kde jsou všechny typy založeny na principu tříd (tzn. Eiffel nemá primitivní datové typy)
  • typová bezpečnost
  • syntax klíčových slov navazuje na tradici jazyků ALGOL / Pascal, ale oddělovače nejsou povinné
  • podpora statického přetypování
  • generické programování
  • ignorování velikosti písmen

Cíl projektu

[editovat | editovat zdroj]

Eiffel se vyhýbá kódovým trikům nebo kódovacím technikám určeným jako optimalizační tipy pro kompilátor. Cílem není jen to, aby byl kód co nejvíce čitelný, ale také umožňuje programátorům soustředit se na důležité aspekty programu, aniž by zapadl do implementačních detailů. Předpokládá se, že jednoduchost Eiffelu bude podporovat jednoduché, rozšiřitelné, znovu použitelné a spolehlivé odpovědi na výpočetní problémy. Překladače Eiffelu poskytují rozsáhlé optimalizační techniky.

Předpoklady

[editovat | editovat zdroj]

Eiffel byl původně vyvinut Eiffel Software, společnost s původním názvem Interactive Software Engineering založil Bertrand Meyer. Kniha Object-Oriented Software Construction obsahuje detailní zpracování koncepcí a teorií objektových technologií, které vedly k návrhu jazyka Eiffel. Cílem návrhu jazyka, knihoven a programovacích metod je umožnit programátorům tvořit spolehlivé, znovu použitelné softwarové moduly. Eiffel podporuje vícenásobnou dědičnost, genericitu, polymorfismus, zapouzdření a typově bezpečnou konverzi. Jeho největším přínosem k softwarovému inženýrství je návrh podle smlouvy. Návrh jazyka je založen na teorii objektově orientovaného programování, s malým vlivem jiných zdrojů nebo zájmu o podporu starších kódů. Eiffel formálně podporuje abstraktní datové typy.

Implementace a prostředí

[editovat | editovat zdroj]

Dosud podporované

[editovat | editovat zdroj]
  • EiffelStudio[2] - integrované vývojové prostředí od společnosti Eiffel Software; standardně pod komerční licencí, s ročním zpožděním je kód zveřejňován také pod licencí GNU GPL, ale pro free verzi nejsou vydávány oficiální instalovatelné balíčky
  • Gobo Eiffel[3] - FOSS implementace usilující o plnou kompatibilitu kódu s EiffelStudio
  • Liberty Eiffel[4] - komunitní projekt založený na kódu ukončeného projektu SmartEiffel (viz níže), jazyk i knihovna jsou značně odlišné od implementací výše

Historické (výběr)

[editovat | editovat zdroj]
  • EiffelEnvision[5] - plug-in do Microsoft Visual Studio přidávající podporu pro Eiffel
  • Visual Eiffel[6] - implementace jazyka a vývojové prostředí vyvíjené německou firmou Object Tools GmbH
  • SmartEiffel (pův. SmallEiffel)[7][8] - první FOSS implementace Eiffelu, vyvíjená jako výzkumný projekt a jako jazyk pro výukové účely na Lorraine Research Laboratory in Computer Science and its Applications (LORIA) ve Francii[9]
  • tecomp[10] - interpretovaná verze jazyka

Několik dalších programovacích jazyků obsahuje prvky, které byly poprvé použity v jazyce Eiffel. Například Sather byl původně založen na Eiffelu, ale nyní se jejich cesty rozcházejí a Sather dokonce obsahuje několik funkcí funkcionálního programování. Eiffel je také základem interaktivního vyučovacího jazyka Blue, předchůdce BlueJ. Apple Media Tool obsahuje Apple Media Language, který je založený na jazyku Eiffel.

Specifikace a normy

[editovat | editovat zdroj]

Jazyk Eiffel je standardizovaný podle mezinárodní normy ISO. Norma byla vytvořena společností Ecma International, která jako první schválila standard 21. června 2005 jako ECMA 367, Eiffel: analýza, návrh a implementační jazyk. V červnu 2006 ECMA a ISO přijala druhou verzi. V listopadu 2006 poprvé ISO publikovalo tuto verzi. Normy je možné nalézt a používat zdarma na stránkách ECMA. Verze ISO je ve všech ohledech stejná, kromě formátování.
Zatímco Gobo Eiffel a tecomp se zavázaly k dodržování standardu, vývojový tým SmartEiffelu nový standard odmítl jako fakticky nový jazyk, odvracející se od stěžejních hodnot původního Eiffelu.[7] Nástupnický projekt Liberty Eiffel ke standardu zaujal smířlivější postoj a principielně ho neodmítá, ale implementuje jen vybrané prvky a nezavazuje se k jeho úplné implementaci.[11]

Předchůdci specifikace jazyka:

  • Bertrand Meyer: Eiffel: The Language, Prentice Hall, druhé vydání, 1992 (první vydání: 1991)
  • Bertrand Meyer: Standard Eiffel, 1997- přítomnost
  • Bertrand Meyer: Object-Oriented Software Construction, Prentice Hall: první vydání 1988, druhé vydání 1997
  • čtyři specifikace[12] vydané v letech 1996-2002 sdružením NICE (The Non-Profit International Consortium for Eiffel)

Současná verze této normy od června 2006 obsahuje některé nesrovnalosti, ale výbor ECMA zatím neoznámil, kdy a jak chce tyto nesrovnalosti řešit.

Ukázka programu

[editovat | editovat zdroj]

„Hello, world!“

[editovat | editovat zdroj]

Program „Hello world“ může vypadat v programovacím jazyce Eiffel takto:

class
    HELLO_WORLD
create
    make
feature
    make
        do
            print ("Hello, world!%N")
        end
end

V tomto článku byly použity překlady textů z článků Eiffel (programovací jazyk) na slovenské Wikipedii a Eiffel (programovací jazyk) na anglické Wikipedii.

  1. Eiffel in a nutshell [online]. Eiffel Software [cit. 2018-05-25]. Dostupné online. (anglicky) 
  2. Home. Eiffel Software - The Home of EiffelStudio [online]. [cit. 2025-05-28]. Dostupné online. (anglicky) 
  3. Gobo Eiffel Compiler. www.gobosoft.com [online]. [cit. 2024-02-06]. Dostupné online. 
  4. Liberty Eiffel Compiler. www.liberty-eiffel.org [online]. [cit. 2024-02-06]. Dostupné online. 
  5. EiffelEnvision Overview. www.eiffel.com [online]. [cit. 2025-06-08]. Dostupné v archivu pořízeném z originálu dne 2006-04-14. 
  6. Wayback Machine. visual-eiffel.org [online]. [cit. 2025-06-08]. Dostupné v archivu pořízeném z originálu dne 2018-08-28. 
  7. a b SmartEiffel, the GNU Eiffel Compiler, Tools and Libraries. smarteiffel.loria.fr [online]. [cit. 2025-06-08]. Dostupné v archivu pořízeném z originálu dne 2006-09-25. 
  8. Introduction - Liberty Eiffel Wiki. wiki.liberty-eiffel.org [online]. [cit. 2024-02-06]. Dostupné online. 
  9. LORIA. www.loria.fr [online]. [cit. 2025-05-26]. Dostupné online. 
  10. tecomp: The Eiffel Compiler. SourceForge [online]. 2015-06-17 [cit. 2024-02-06]. Dostupné online. (anglicky) 
  11. ECMA - Liberty Eiffel Wiki. wiki.liberty-eiffel.org [online]. [cit. 2025-06-08]. Dostupné online. 
  12. NICE Standards. NICE: The Nonprofit International Consortium for Eiffel [online]. [cit. 2025-06-08]. Dostupné v archivu pořízeném z originálu dne 2024-05-12. 

Externí odkazy

[editovat | editovat zdroj]