Eiffel (Programmiersprache)

Eiffel (Programmiersprache)
Eiffel
Erscheinungsjahr: 1985
Entwickler: Bertrand Meyer und Eiffel Software
Einflüsse: Ada, ALGOL, Simula
Beeinflusste: Ruby
Betriebssystem: plattformunabhängig
Lizenz: GPL

Eiffel ist eine universelle, rein objektorientierte Programmiersprache und wurde 1985 von dem französischen Informatiker Bertrand Meyer und seiner Firma Interactive Software Engineering Inc. (Goleta, Kalifornien) als Alternative zu C++ entworfen, wobei sie zunächst nur für den Gebrauch durch die eigene Firma gedacht war.

Inhaltsverzeichnis

Die Programmiersprache

Der Name Eiffel, eine Reverenz an Gustave Eiffel, Erbauer des Eiffelturms und einen der großen Ingenieure des 19. Jahrhunderts, dokumentiert den Anspruch, eine Programmiersprache geschaffen zu haben, mit der Softwareentwicklung gemäß den Standards des Ingenieurwesens ermöglicht wird, da sie die Erkenntnisse des Software Engineering konsequent umsetzt.

Es handelt sich im Unterschied zu C++ um einen vollständig neuen Entwurf, der auf keiner älteren Sprache aufbaut. Erklärtes Ziel der Entwicklung ist es, mit Eiffel ein Werkzeug zu schaffen, um damit umfangreiche Software aus zuverlässigen, wiederverwendbaren sowie leicht wart- und testbaren Modulen zu konstruieren. Dazu werden potenziell riskante Möglichkeiten des Programmierens (manuelle Speicherverwaltung, globale Variablen, undisziplinierte Typumwandlungen, direkte Zeigermanipulation, Goto, usw.) weitgehend ausgeschlossen, Optimierungen (speziell die Ausführungsgeschwindigkeit betreffend, etwa Inline-Ersetzung) an den Compiler delegiert. Der konsequent objektorientierte Ansatz für das Design im Großen wird ergänzt 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 einfach (das heißt: 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 bezüglich der Konformität 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 gültige Spezifikation der Programmiersprache, nun Standard Eiffel genannt.

Eigenschaften

Eine Spezialität von Eiffel ist die Unterstützung des Design-By-Contract-Prinzips bei der Entwicklung. Dazu werden durch die Sprache differenzierte Mittel (Vor- und Nachbedingungen sowie Invarianten) bereitgestellt, um Klassen, ihre einzelnen Funktionen sowie ganze Klassenhierarchien auf systematische Weise mit (abschaltbaren) Zusicherungen (Assertions) auf Korrektheit der Abläufe und Zustände während der Laufzeit zu überwachen.

Sicherheit und Einfachheit

  • kein Überladen 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 für den Benutzer einer Klasse
  • Attribute eines Objekts können nicht durch Zuweisung von außen verändert werden
  • kein Programmtext außerhalb von Klassen, daher insbesondere auch keine globalen Variablen
  • Routinen können den Wert ihrer formalen Parameter nicht verändern
  • Groß/Kleinschreibung ist nicht signifikant
  • Semikolon zur Trennung von Anweisungen nicht erforderlich
  • getrennte Namensräume für Klassennamen und sonstige Namen
  • weder eine allgemeine Sprunganweisung (goto) noch spezielle wie continue, break, return
  • kein unsicheres Casting von Typen
  • keine Pointerarithmetik
  • Objekte können zur Laufzeit nur „void“ sein, wenn explizit gefordert (void safety)

Aufbau eines Eiffel-Programms

Ein Eiffel-Programm besteht nur aus Klassen. Jede Klasse ist ein eigenes Modul. Bei der Compilierung wird eine Root-Klasse festgelegt, von der eine Instanz beim Starten des Programms erzeugt wird.

Beispielprogramm in Eiffel

class HELLO
creation
        make
feature make
                do
                        io.put_string("Hello World.%N")
                end
end

Erläuterung

Mit class HELLO wird die Klasse HELLO angelegt. Die 'creation' Klausel definiert die 'make' Methode als Konstruktor. (in diesem Beispiel ist 'make' äquivalent zu der 'main' Methode in Java etc. Welche Klasse die Rootklasse ist, und welche Methode dieser Klasse zuerst aufgerufen werden soll wird in der sog. eiffel configuration file (*.ecf) des Projekts definiert.) Ist kein Konstruktor definiert ist es nicht möglich eine Instanz der Klasse zu erzeugen.

Anwendungsgebiete

Als Anwendungsgebiete, für die sich Eiffel besonders anbietet, werden genannt:

  • sicherheitskritische Anwendungen
  • Entwurf- und Spezifikationssprache
  • Implementierung komplexer Datenstrukturen
  • Ausbildung in objektorientierter Programmierung

Compiler

Einer der verbreitetsten Compiler ist EiffelStudio von der Firma Eiffel Software des Erfinders der Sprache, Bertrand Meyer. EiffelStudio wird seit April 2006 außerdem unter der GPL lizenziert (duales Lizenzsystem). Mit SmartEiffel (ehemals SmallEiffel), Visual Eiffel und dem sich aktuell in Entwicklung befindlichen tecomp und GEC (aus der Gobo Klassenbibliothek) gibt es somit fünf Open-Source-Compiler. SmartEiffel wird nach Ankündigung der Entwickler allerdings den aktuell gültigen Standard ECMA-367 nicht implementieren, sondern sich in eine nur zu Eiffel ähnliche Sprache weiterentwickeln.

Eiffel konnte bis heute nicht die Verbreitung von C++ oder Java erlangen. Es steht auch keine der großen Software- oder IT-Firmen hinter Eiffel (wie Oracle hinter Java oder Microsoft hinter C# bzw. BASIC).

Der Quelltext wird gewöhnlich in den Maschinencode der Zielmaschine kompiliert. (Dies geschieht über den Umweg der Umwandlung der Eiffel-Quellen in C-Code, mit Ausnahme von Visual Eiffel, das direkt x86-Code für Windows und Linux generiert.) Der so erzeugte Maschinencode ist je nach Anwendung vergleichbar mit entsprechendem C- bzw. C++-Code.[1].

Es gibt aber auch Ansätze, Eiffel nach Bytecode zu übersetzen. Die Firma Eiffel Software bietet unter der Produktbezeichung Eiffel ENVisioN! eine Eiffel-Version an, die sich in Visual Studio.NET integriert und Common Intermediate Language (CIL) erzeugt. SmartEiffel besitzt ein Backend für Java Bytecode.

Literatur

  • Frieder 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: Object-oriented Software Construction. 2nd ed., Prentice Hall, 1997
  • Bertrand Meyer: Eiffel: The Language. Prentice Hall, 1992 -- enthält eine ältere 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, 1995
  • http://piskernig.at/diplom.pdf -- Diplomarbeit über Einbindung C++ in Eiffel, Compiler, Wrapper-Klassen, Wien 2004 (PDF-Datei; 678 kB)

Referenzen

  1. Diplomarbeit von Peter Haefliger an ETH Zürich

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Programmiersprache/Zeittafel — Jahr Name Entwickler, Hersteller Vorläufer, Vorgänger 1840 Erstes Programm Ada Lovelace * 1946 Plankalkül Konrad Zuse * 1952 A 0 Grace Hopper * …   Deutsch Wikipedia

  • Programmiersprache Java — Java Objektorientierte Programmiersprache Basisdaten Paradigmen: Objektorientierte Programmiersprache Aktuelle  …   Deutsch Wikipedia

  • Eiffel — Der Begriff Eiffel bezeichnet eine Person, siehe Gustave Eiffel, französischer Ingenieur, Konstrukteur des Eiffelturms. eine Programmiersprache, siehe Eiffel (Programmiersprache) ein Bauunternehmen, siehe Eiffel Deutschland Stahltechnologie eine… …   Deutsch Wikipedia

  • Programmiersprache C — C Paradigmen: imperativ, strukturiert Erscheinungsjahr: 1972 Entwickler: Dennis Ritchie Bell Labs wichtige Implementierungen …   Deutsch Wikipedia

  • Programmiersprache Eiffel — Eiffel ist eine universelle, rein objektorientierte Programmiersprache und wurde 1985 von dem französischen Informatiker Bertrand Meyer und seiner Firma Interactive Software Engineering Inc. (Goleta, Kalifornien) als Alternative zu C++ entworfen …   Deutsch Wikipedia

  • Eiffel — I Eiffel   [nach dem franz. Ingenieur Gustave Eiffel (1832 1923)], 1985 von dem US Amerikaner Bernard Meyer eingeführte objektorientierte Programmiersprache, die auf älteren Sprachen wie Simula, Modula, Pascal u. a. basiert. Im Gegensatz zu… …   Universal-Lexikon

  • C Programmiersprache — C Paradigmen: imperativ, strukturiert Erscheinungsjahr: 1972 Entwickler: Dennis Ritchie Bell Labs wichtige Implementierungen …   Deutsch Wikipedia

  • Ada (Programmiersprache) — Ada Paradigmen: imperativ, strukturiert, objektorientiert Erscheinungsjahr: 1983 Entwickler: Jean Ichbiah Typisierung: sta …   Deutsch Wikipedia

  • Java (Programmiersprache) — Java Basisdaten Paradigmen: Objektorientierte Programmiersprache Erscheinungsjahr …   Deutsch Wikipedia

  • Ruby (Programmiersprache) — Ruby Offizielles Logo Basisdaten Paradigmen: multiparadigmatisch Erscheinungsjahr: 1995 …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”