www.wikidata.de-de.nina.az
Eiffel ist eine universelle rein objektorientierte Programmiersprache und wurde 1985 von dem franzosischen Informatiker Bertrand Meyer und seiner Firma Interactive Software Engineering Inc Goleta Kalifornien als Alternative zu C entworfen Ursprunglich war sie nur fur den Gebrauch durch die eigene Firma gedacht EiffelBasisdatenErscheinungsjahr 1985Designer Bertrand MeyerEntwickler Bertrand Meyer und Eiffel SoftwareAktuelle Version 22 05 1 31 Mai 2022 Beeinflusst von Ada ALGOL SimulaBeeinflusste RubyBetriebssystem plattformunabhangigLizenz GPL Inhaltsverzeichnis 1 Die Programmiersprache 1 1 Eigenschaften 1 2 Sicherheit und Einfachheit 1 3 Aufbau eines Eiffel Programms 1 4 Beispielprogramm in Eiffel 1 4 1 Erlauterung 1 5 Anwendungsgebiete 2 Compiler 3 Literatur 4 Weblinks 5 EinzelnachweiseDie Programmiersprache BearbeitenDer Name Eiffel eine Reverenz an Gustave Eiffel Erbauer des Eiffelturms und einen der grossen Ingenieure des 19 Jahrhunderts dokumentiert den Anspruch eine Programmiersprache geschaffen zu haben mit der Softwareentwicklung gemass den Standards des Ingenieurwesens ermoglicht wird da sie die Erkenntnisse des Software Engineering konsequent umsetzt Es handelt sich im Unterschied zu C um einen vollstandig neuen Entwurf der auf keiner alteren Sprache aufbaut Erklartes Ziel der Entwicklung ist es mit Eiffel ein Werkzeug zu schaffen um damit umfangreiche Software aus zuverlassigen wiederverwendbaren sowie leicht wart und testbaren Modulen zu konstruieren Dazu werden potenziell riskante Moglichkeiten des Programmierens manuelle Speicherverwaltung globale Variablen undisziplinierte Typumwandlungen direkte Zeigermanipulation Goto usw weitgehend ausgeschlossen Optimierungen speziell die Ausfuhrungsgeschwindigkeit betreffend etwa Inline Ersetzung an den Compiler delegiert Der konsequent objektorientierte Ansatz fur das Design im Grossen wird erganzt durch eher strikte Anwendung der strukturierten Programmierung im Detail also auf der Ebene der einzelnen Routine in der Eiffel Terminologie des einzelnen feature Die Syntax ist beeinflusst von Ada und der ALGOL Sprachfamilie Algol Pascal Modula Sie soll vor allem leicht lesbar sein Die Sprachdefinition von Eiffel ist Public Domain und steht unter der Kontrolle von Nonprofit International Consortium for Eiffel NICE diese Organisation hat das Recht jedes Entwicklungswerkzeug bezuglich der Konformitat zur Sprachdefinition zu validieren bevor es den Namen Eiffel tragen darf Am 21 Juni 2005 wurde in Amsterdam in der 89 Allgemeinen Versammlung der ECMA der Standard ECMA 367 Eiffel Analysis Design and Programming Language verabschiedet Er ist die aktuell gultige Spezifikation der Programmiersprache nun Standard Eiffel genannt Eigenschaften Bearbeiten statische Typprufung automatische Speicherbereinigung Garbage Collection Mehrfachvererbung entstehende Namenskonflikte konnen durch Umbenennung aufgelost werden Abstrakte Klassen sog deferred classes Generische Klassen vgl Templates in C Polymorphie standardmassig dynamische Bindung wo moglich soll der Compiler in effizientere statische Bindung optimieren Elemente der funktionalen Programmierung Tupel und sog agents Prafix und Infix Operatoren konnen wie Funktionen vereinbart werden Ausnahmebehandlung Schnittstelle zu anderen Programmiersprachen insbesondere C und C Standardbibliothek im Umfang der von C vergleichbar Eine Spezialitat von Eiffel ist die Unterstutzung von Design By Contract bei der Entwicklung Dazu stellt die Sprache differenzierte Mittel Vor und Nachbedingungen sowie Invarianten bereit um Klassen ihre einzelnen Funktionen sowie ganze Klassenhierarchien auf systematische Weise mit abschaltbaren Zusicherungen Assertions auf Korrektheit der Ablaufe und Zustande wahrend der Laufzeit zu uberwachen Sicherheit und Einfachheit Bearbeiten kein Uberladen von Funktionen und Operatoren ein Name oder Operator darf nicht mehrmals in einer Klasse definiert sein nur ein universeller Schleifentyp mit explizit angebbarer Variante und Invariante optional keine spezielle Syntax zur Indizierung von Arrays und Strings keine Unterscheidung von Attributen Variablen und Funktionen ohne Parameter fur den Benutzer einer Klasse Attribute eines Objekts konnen nicht durch Zuweisung von aussen verandert werden kein Programmtext ausserhalb von Klassen daher insbesondere auch keine globalen Variablen Routinen konnen den Wert ihrer formalen Parameter nicht verandern Gross Kleinschreibung ist nicht signifikant Semikolon zur Trennung von Anweisungen nicht erforderlich getrennte Namensraume fur Klassennamen und sonstige Namen weder eine allgemeine Sprunganweisung wie goto noch spezielle wie continue break return kein unsicheres Konvertieren von Typen keine Pointerarithmetik Objekte konnen zur Laufzeit nur void sein wenn explizit gefordert genannt void safety Aufbau eines Eiffel Programms Bearbeiten Ein Eiffel Programm besteht nur aus Klassen Jede Klasse ist ein eigenes Modul Bei der Kompilierung wird eine Root Klasse festgelegt von der eine Instanz beim Starten des Programms erzeugt wird Beispielprogramm in Eiffel Bearbeiten class HELLO Liberty Eiffel create make feature make is do print Hello World N end end class HELLO ECMA Eiffel create make feature make do print Hello World N end end Erlauterung Bearbeiten Mit class HELLO wird die Klasse HELLO angelegt Die create Klausel definiert die make Methode als Konstruktor In diesem Beispiel entspricht make der main Methode etwa von Java Welche Klasse die Rootklasse ist und welche Methode dieser Klasse zuerst aufgerufen werden soll wird im Konfigurationsfile eiffel configuration file ecf des Projekts definiert Ohne einen Konstruktor ist es nicht moglich eine Instanz der Klasse zu erzeugen Anwendungsgebiete Bearbeiten Als Anwendungsgebiete fur die sich Eiffel besonders anbietet werden genannt sicherheitskritische Anwendungen Entwurf und Spezifikation Implementierung komplexer Datenstrukturen Ausbildung in objektorientierter ProgrammierungCompiler Bearbeiten nbsp EiffelStudio Version 7 2Der verbreitetste Compiler ist EiffelStudio von der Firma Eiffel Software des Erfinders der Sprache Bertrand Meyer EiffelStudio wird seit April 2006 ausserdem unter der GPL lizenziert duales Lizenzsystem SmartEiffel ehemals SmallEiffel war einst einer der verbreitetsten Open Source Compiler fur Eiffel Nachdem sich die Entwickler entschieden die Kompatibilitat mit Eiffel aufzugeben und in eine andere Richtung zu gehen wurde das Projekt mittlerweile eingestellt Im November 2013 wurde die erste offizielle Version des SmartEiffel Nachfolgers Liberty Eiffel freigegeben neben EiffelStudio und dem noch in Entwicklung befindlichen Gobo Eiffel Compiler aus der Gobo Klassenbibliothek ist dies der letzte noch aktiv entwickelte Compiler fur Eiffel 2 Die Entwicklung der Compiler Visual Eiffel und tecomp 3 wurde eingestellt Eiffel konnte bis heute nicht die Verbreitung von C oder Java erlangen Es steht auch keine der grossen Software oder IT Firmen hinter Eiffel wie das z B bei Java oder NET der Fall ist Der Quelltext wird gewohnlich in den Maschinencode der Zielmaschine kompiliert Dies geschieht uber den Umweg der Umwandlung der Eiffel Quellen in C Code mit Ausnahme von Visual Eiffel das direkt x86 Code fur Windows und Linux generiert Der so erzeugte Maschinencode ist je nach Anwendung vergleichbar mit entsprechendem C bzw C Code 4 Literatur BearbeitenFrieder Monninger Eiffel Objektorientiertes Programmieren in der Praxis H Heise Verlag 1993 Jean Marc Jezequel Object Oriented Software Engineering with Eiffel Addison Wesley Professional 1996 Bertrand Meyer Touch of Class Learning to Program Well with Objects and Contracts Springer 2009 Bertrand Meyer Object oriented Software Construction 2nd ed Prentice Hall 1997 Bertrand Meyer Eiffel The Language Prentice Hall 1992 enthalt eine altere Sprachdefinition von Eiffel Das Werk wird derzeit von Bertrand Meyer auf den ECMA Standard aktualisiert und wird den Namen Standard Eiffel tragen R Switzer Eiffel An Introduction Prentice Hall 1995 Richard Wiener Software Development Using Eiffel There Can Be Life After C Prentice Hall 1995Weblinks Bearbeitenecma international org Der aktuell gultige Eiffel Standard eiffel nice org Non Profit Organisation zur Weiterentwicklung Standardisierung und Verbreitung von Eiffel eiffel com Eiffel Software Open Source Eiffel IDE fur Windows Linux Mac OS X u a sourceforge net The Eiffel Compiler tecomp Open Source Eiffel Compiler gobosoft com Die wichtigste portable Klassenbibliothek mit Unterstutzung fur komplexe Datenstrukturen Unicode XML Parser etc und eines neuen Open Source Eiffel Compilers linux magazin de Deutschsprachige Einfuhrung in Eiffel smarteiffel loria fr Open Source Implementierung einer Eiffel ahnlichen Sprache visual eiffel org eine weitere Open Source Implementierung die native code fur X86 Systeme generiert B Meyer inf ethz ch PDF erklart das Konzept von Eiffel execve net Cetus Eiffel Page Eiffel Entwicklungsumgebung wird Open Source heise online liberty eiffel org GNU Nachfolger von SmartEiffel Einzelnachweise Bearbeiten EiffelStudio 22 05 is available abgerufen am 19 Dezember 2022 Liberty Eiffel tecomp Diplomarbeit von Peter Haefliger an ETH Zurich PDF 723 kB Normdaten Sachbegriff GND 4280526 0 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Eiffel Programmiersprache amp oldid 216792713