Zum Inhalt springen

„Eiffel (Programmiersprache)“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][ungesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Dibe (Diskussion | Beiträge)
K korr./link
Dibe (Diskussion | Beiträge)
Gliederung
Zeile 1: Zeile 1:
'''Eiffel''' ist eine universelle, rein [[objektorientierte Programmierung|objektorientierte]] [[Programmiersprache]] und wurde seit [[1985]] von dem französischen Informatiker [[Bertrand Meyer]] und seiner Firma ''Interactive Software Engineering Inc.'' ([[Goleta]], [[Kalifornien]]) als Alternative zu [[C-Plusplus|C++]] entworfen, wobei zunächst nur an den Gebrauch durch die eigene Firma gedacht war. 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 [[Modul (Softwareentwicklung)|Modulen]] zu [[Konstruktionsprozess|konstruieren]]. Dazu werden potenziell riskante Möglichkeiten des Programmieres (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 [[Strukturierte Programmierung|strukturierten Programmierung]] "im Detail" (auf der Ebene der einzelnen Routine).
'''Eiffel''' ist eine universelle, rein [[objektorientierte Programmierung|objektorientierte]] [[Programmiersprache]] und wurde seit [[1985]] von dem französischen Informatiker [[Bertrand Meyer]] und seiner Firma ''Interactive Software Engineering Inc.'' ([[Goleta]], [[Kalifornien]]) als Alternative zu [[C-Plusplus|C++]] entworfen, wobei zunächst nur an den Gebrauch durch die eigene Firma gedacht war.


== Die Programmiersprache ==
Die [[Syntax]] ist beeinflusst von [[Ada (Programmiersprache)|Ada]] und der [[ALGOL]]-Sprachfamilie. Sie soll vor allem "einfach" (leicht lesbar) sein.
Der Name Eiffel, eine Reverenz an [[Gustave Eiffel]], Erbauer des [[Eiffelturm]]s und einen der großen Ingenieure des 19. Jahrhunderts, dokumentiert den Anspruch, eine Programmiersprache geschaffen zu haben, mit der Softwareentwicklung gemäß den Standards des [[Ingenieur]]wesens ermöglicht wird und welche 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 [[Modul (Softwareentwicklung)|Modulen]] zu [[Konstruktionsprozess|konstruieren]]. Dazu werden potenziell riskante Möglichkeiten des Programmieres (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 [[Strukturierte Programmierung|strukturierten Programmierung]] "im Detail" (auf der Ebene der einzelnen Routine bzw. - in der Eiffel-Terminologie - des einzelnen ''feature'').
Die Sprachdefinition von Eiffel ist [[Public Domain]] und steht unter der Kontrolle von ''Nonprofit International Consortium for Eiffel'' (NICE), welche das Recht hat, jedes Entwicklungswerkzeug bezüglich der Konformität zum Standard zu validieren, bevor es den Namen "Eiffel" tragen darf.


Die [[Syntax]] ist beeinflusst von [[Ada (Programmiersprache)|Ada]] und der [[ALGOL]]-Sprachfamilie (Algol, Pascal, Modula). Sie soll vor allem "einfach" (leicht lesbar) sein.
Der Anspruch, mit Eiffel eine Programmiersprache geschaffen zu haben, mit der Softwareentwicklung gemäß den Standards des [[Ingenieur]]wesens ermöglicht wird und welche die Erkenntnisse des [[Software Engineering]] konsequent umsetzt, wird insbesondere durch den Namen dokumentiert, eine Reverenz an [[Gustave Eiffel]], Erbauer des [[Eiffelturm]]s und einen der großen Ingenieure des 19. Jahrhunderts.


Die Sprachdefinition von Eiffel ist [[Public Domain]] und steht unter der Kontrolle von ''Nonprofit International Consortium for Eiffel'' (NICE), welche das Recht hat, jedes Entwicklungswerkzeug bezüglich der Konformität zum Standard zu validieren, bevor es den Namen "Eiffel" tragen darf.
Als Anwendungsgebiete, für die sich Eiffel besonders anbietet, werden genannt:
* sicherheitskritische Anwendungen
* Entwurf- und Spezifikationssprache
* Ausbildung in objektorientierter Programmierung

Es gibt einige wenige kommerzielle Eiffel-Entwicklungsumgebungen und mit SmartEiffel (ehemals SmallEiffel, siehe Abschnitt Weblinks) mindestens einen [[Open Source]]-Compiler, die Sprache konnte bis heute (2003) allerdings nicht die Verbreitung von C++ oder [[Java (Programmiersprache)|Java]] erlangen. Es steht auch keine der großen Software- oder IT-Firmen hinter Eiffel (wie [[Sun Microsystems]] hinter Java oder [[Microsoft]] hinter [[C-Sharp|C#]] bzw. [[BASIC]]).

Der [[Quelltext]] wird gewöhnlich in den [[Maschinencode]] der Zielmaschine compiliert (manchmal auch über den Umweg der Umwandlung der Eiffel-Sourcen in [[C (Programmiersprache)|C]]-Code), es gibt aber auch Ansätze, diesen in [[Bytecode]] für die [[Java Virtual Machine]] zu übersetzen. Die Effizienz sowohl bezüglich der Geschwindigkeit als auch bezüglich des Speicherbedarfs ist bei [[Native Code]] in etwa mit der von C++ vergleichbar.

Die Firma [[Eiffel Software]] bietet unter der Produktbezeichung Eiffel ENVisioN! eine Eiffel-Version an, die sich in [[Visual Studio.NET]] integriert und [[Common Language Infrastructure#Technische Einzelheiten|Common Intermediate Language (CIL)]] erzeugt.


=== Eigenschaften ===
=== Eigenschaften ===
Zeile 38: Zeile 30:
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 (Informatik)|Instanz]] beim Starten des Programms erzeugt wird.
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 (Informatik)|Instanz]] beim Starten des Programms erzeugt wird.


=== Literatur ===
=== Anwendungsgebiete ===
Als Anwendungsgebiete, für die sich Eiffel besonders anbietet, werden genannt:
* sicherheitskritische Anwendungen
* Entwurf- und Spezifikationssprache
* Ausbildung in objektorientierter Programmierung

== Compiler ==
Es gibt einige wenige kommerzielle Eiffel-Entwicklungsumgebungen und mit ''SmartEiffel'' (ehemals ''SmallEiffel'', siehe Abschnitt Weblinks) mindestens einen [[Open Source]]-Compiler, die Sprache konnte bis heute (2003) allerdings nicht die Verbreitung von C++ oder [[Java (Programmiersprache)|Java]] erlangen. Es steht auch keine der großen Software- oder IT-Firmen hinter Eiffel (wie [[Sun Microsystems]] hinter Java oder [[Microsoft]] hinter [[C-Sharp|C#]] bzw. [[BASIC]]).

Der [[Quelltext]] wird gewöhnlich in den [[Maschinencode]] der Zielmaschine compiliert (manchmal auch über den Umweg der Umwandlung der Eiffel-Sourcen in [[C (Programmiersprache)|C]]-Code), es gibt aber auch Ansätze, diesen in [[Bytecode]] für die [[Java Virtual Machine]] zu übersetzen. Die Effizienz sowohl bezüglich der Geschwindigkeit als auch bezüglich des Speicherbedarfs ist bei [[Native Code]] in etwa mit der von C++ vergleichbar.

Die Firma [[Eiffel Software]] bietet unter der Produktbezeichung ''Eiffel ENVisioN!'' eine Eiffel-Version an, die sich in [[Visual Studio.NET]] integriert und [[Common Language Infrastructure#Technische Einzelheiten|Common Intermediate Language (CIL)]] erzeugt.

== Literatur ==
* Jean-Marc Jezequel: ''Object-Oriented Software Engineering with Eiffel''. Addison Wesley Professional, 1996
* 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: ''Object-oriented Software Construction''. 2nd ed., Prentice Hall, 1997
Zeile 45: Zeile 50:
* Richard Wiener: ''Software Development Using Eiffel - There Can Be Life After C++''. Prentice Hall, 1995
* Richard Wiener: ''Software Development Using Eiffel - There Can Be Life After C++''. Prentice Hall, 1995


=== Weblinks ===
== Weblinks ==
*http://www.eiffel-nice.org/ --- [[Non-Profit-Organisation]] zur Weiterentwicklung, [[Standardisierung]] und Verbreitung von Eiffel
*http://www.eiffel-nice.org/ --- [[Non-Profit-Organisation]] zur Weiterentwicklung, [[Standardisierung]] und Verbreitung von Eiffel
*http://smarteiffel.loria.fr/ --- Open Source [[Implementierung]] von Eiffel
*http://smarteiffel.loria.fr/ --- Open Source [[Implementierung]] von Eiffel

Version vom 21. Januar 2005, 03:26 Uhr

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

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 und welche 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 Programmieres (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" (auf der Ebene der einzelnen Routine bzw. - 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" (leicht lesbar) sein.

Die Sprachdefinition von Eiffel ist Public Domain und steht unter der Kontrolle von Nonprofit International Consortium for Eiffel (NICE), welche das Recht hat, jedes Entwicklungswerkzeug bezüglich der Konformität zum Standard zu validieren, bevor es den Namen "Eiffel" tragen darf.

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 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.

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.

Anwendungsgebiete

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

  • sicherheitskritische Anwendungen
  • Entwurf- und Spezifikationssprache
  • Ausbildung in objektorientierter Programmierung

Compiler

Es gibt einige wenige kommerzielle Eiffel-Entwicklungsumgebungen und mit SmartEiffel (ehemals SmallEiffel, siehe Abschnitt Weblinks) mindestens einen Open Source-Compiler, die Sprache konnte bis heute (2003) allerdings nicht die Verbreitung von C++ oder Java erlangen. Es steht auch keine der großen Software- oder IT-Firmen hinter Eiffel (wie Sun Microsystems hinter Java oder Microsoft hinter C# bzw. BASIC).

Der Quelltext wird gewöhnlich in den Maschinencode der Zielmaschine compiliert (manchmal auch über den Umweg der Umwandlung der Eiffel-Sourcen in C-Code), es gibt aber auch Ansätze, diesen in Bytecode für die Java Virtual Machine zu übersetzen. Die Effizienz sowohl bezüglich der Geschwindigkeit als auch bezüglich des Speicherbedarfs ist bei Native Code in etwa mit der von C++ vergleichbar.

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.

Literatur

  • 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 die Sprachdefinition von Eiffel
  • R. Switzer: Eiffel: An Introduction. Prentice Hall, 1995
  • Richard Wiener: Software Development Using Eiffel - There Can Be Life After C++. Prentice Hall, 1995