Ada (Programmiersprache)
Ada | |
---|---|
![]() | |
Basisdaten | |
Paradigmen: | imperativ, strukturiert, objektorientiert |
Erscheinungsjahr: | 1980 |
Designer: | Jean Ichbiah, S. Tucker Taft[1][2] |
Entwickler: | Jean Ichbiah |
Typisierung: | statisch, explizit, stark |
Wichtige Implementierungen: | GNAT |
Standardisierungen: | ANSI/MIL-STD-1815 1983, ISO-8652 1995, Ada 2005, Ada 2012 |
Beeinflusst von: | Algol 68, Pascal, Modula-2, C++, Java |
Beeinflusste: | C++, Eiffel, PL/SQL, Python, Ruby, VHDL, Seed7 |
www.adaic.org |
Ada ist eine strukturierte Programmiersprache mit statischer Typenbindung. Sie wurde von Jean Ichbiah für das Unternehmen Honeywell Bull in den 1970er Jahren entworfen. Ada ist vom Erscheinungsbild ähnlich zur Programmiersprache Pascal. Benannt wurde die Sprache nach Ada Lovelace (1815–1852), der Tochter von Lord Byron und Mitarbeiterin von Charles Babbage, die auch als erste Programmiererin bezeichnet wird. Ada ist im United States Military Standard MIL-STD-1815 spezifiziert.
Überblick
[Bearbeiten | Quelltext bearbeiten]Ada wurde anfänglich stark vom US-Verteidigungsministerium gefördert und unterstützt. Wie alle von der internationalen Organisation für Normung (ISO) standardisierte Sprachen wird sie in regelmäßigen Abständen überarbeitet. Mit Veröffentlichung eines neuen Standards verliert der vorige seine Gültigkeit. Daher gibt es nur eine Sprache Ada; nur zur Unterscheidung der Generationen werden diese informell als Ada 83 (die erste standardisierte Generation), Ada 95, Ada 2005 und Ada 2012 bezeichnet. Die nächste Generation ist im Wesentlichen abgeschlossen und wird vorläufig als Ada 202X bezeichnet. Ada-Compiler werden gewöhnlich einer Validierung unterzogen, der Ada Conformity Assessment Test Suite (ACATS), die praktisch Grundvoraussetzung für den professionellen Einsatz ist. ACATS ist ebenfalls ein ISO-Standard. Aufgrund der hohen Anforderungen, die validierte Compiler erfüllen müssen, hat Ada sich vor allem in sicherheitskritischen Bereichen durchgesetzt, zum Beispiel in der Flugsicherung, in Sicherheits-Einrichtungen der Eisenbahn, in Waffensystemen, der Raumfahrt, der Medizin oder der Steuerung von Kernkraftwerken. Bis auf einzelne Ausnahmen verweigert sich die Automobilindustrie ihrer Verwendung.
Fähigkeiten der Sprache
[Bearbeiten | Quelltext bearbeiten]![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Ada_Lovelace.jpg/170px-Ada_Lovelace.jpg)
Ada war ursprünglich gedacht als allgemeine Programmiersprache, die die Vielzahl von Programmiersprachen im amerikanischen Verteidigungsministerium ersetzen sollte. Heute wird sie meist für eingebettete (embedded) und Echtzeit-Systeme (real-time systems) verwendet. Herausragende Merkmale von Ada sind etwa das strenge Typsystem (starke Typisierung) mit fehlerrobuster Syntax, das zahlreiche Prüfungen schon zur Übersetzungszeit erlaubt, Nebenläufigkeit, Ausnahmebehandlung und generische Programmierung. Ada 95 führte sogenannte tagged types (erweiterbare Typen) ein, die das Ada zugrundeliegende Konzept des Programmieren durch Erweiterung weiter ausbauen und dynamische Polymorphie ermöglichen.
Implementierungen von Ada benutzen üblicherweise keine automatische Speicherbereinigung (garbage collection) zur Speicherverwaltung, da diese das Echtzeitverhalten empfindlich stören würde; der Standard verbietet dies jedoch nicht. Ada unterstützt Laufzeittests, um Speicherüberläufe, Zugriff auf nicht zugewiesenen Speicher, off-by-one-Fehler und andere, ähnlich geartete Fehler frühzeitig zu erkennen. Viele dieser Fehler lassen sich jedoch durch richtige Verwendung der Sprachmittel schon während der Programmierung vermeiden oder während der Übersetzung erkennen. Für eine höhere Effizienz können diese Laufzeittests abgeschaltet werden.
Programmverifikation mit SPARK
[Bearbeiten | Quelltext bearbeiten]Auch zur Programmverifikation stehen verschiedene Spracheigenschaften zur Verfügung. Mit Ada ist es zum ersten Mal gelungen, industriell verwendete Programme automatisch auf Korrektheit zu überprüfen.[3] Dazu wird die Sprachvariante SPARK verwendet, eine Untermenge von Ada mit Annotationen, das sind Kommentare mit spezieller Syntax wie zum Beispiel Vor- und Nachbedingungen. Die Korrektheit eines SPARK-Programms wird mit einem Verifikationsprogramm (SPARK Examiner) durch statische Analyse der Annotationen überprüft (also vor Ausführung des Programms). In den neuesten Sprachgenerationen sind viele dieser Annotationen durch sogenannte Aspekte ersetzt, sodass auch der Übersetzer Nutzen aus ihnen ziehen kann. Ziel ist jedoch, dass für diese Aspekte kein Code erzeugt wird – sie werden wie die Annotationen vom SPARK Examiner ausgewertet.
Programmierwerkzeuge
[Bearbeiten | Quelltext bearbeiten]Für Ada gibt es den quelloffenen Compiler GNAT unter GP-Lizenz. Die Firma AdaCore entwickelt die integrierte Entwicklungsumgebung (IDE) GNAT Programming Studio, die in einer freien und einer kommerziellen Version angeboten wird. Darüber hinaus bieten verschiedene namhafte Hersteller Compiler mit IDEs für Ada an.[4][5][6][7][8] Ein Plugin für Eclipse, die GNATbench, wurde zunächst in der kommerziellen Version GNATpro vertrieben, ist mittlerweile aber auch unter einer GPL verfügbar. Daneben gibt es einige kleinere IDEs, die Ada unterstützen und sich vor allem für die Lehre eignen, zum Beispiel jGRASP, oder unter Windows das bekannte AdaGIDE. Außerdem existiert ein Emacs-Mode für Ada.
Geschichte
[Bearbeiten | Quelltext bearbeiten]In den 1970ern zeigte sich das Verteidigungsministerium der Vereinigten Staaten besorgt über die wachsende Anzahl von Programmiersprachen, die in seinen Projekten verwendet wurden. Wartung, Ausbildung, Modularität und Wiederverwendung waren dadurch schwer beeinträchtigt. Viele der Programmiersprachen waren zudem proprietär (man war also vom Anbieter abhängig) oder schlicht veraltet. 1975 sollte eine Arbeitsgruppe diesen Dschungel lichten und eine Sprache finden oder erfinden, welche die Bedingungen des Ministeriums erfüllt. Eine Reihe von Anforderungskatalogen, bezeichnet als Strawmann, Woodenman, Tinman, Ironman und Steelman (daneben für eine integrierte Entwicklungsumgebung die Dokumente Sandman (nicht veröffentlicht), Pebbleman und Stoneman) wurden erstellt und viele existierende Sprachen daraufhin überprüft, doch 1977 kam man zum Ergebnis, dass keine der vorhandenen Sprachen geeignet war. Nach einer Ausschreibung kamen vier Kandidaten in die nähere Auswahl (Red, Green, Blue und Yellow genannt), und im Mai 1979 entschied man sich für Green von Jean Ichbiah, welches dann auf den Namen Ada getauft wurde. Die ursprüngliche Beschreibung wurde am 10. Dezember 1980 gebilligt, dem Geburtstag von Ada Lovelace. Der Standard erhielt die Bezeichnung MIL-STD 1815, da 1815 ihr Geburtsjahr war. Die erste Implementierung fand unter Multics statt.
Im Februar 1983 wurde die Sprache zu einer ANSI-Norm (ANSI/MIL-STD 1815A), die ISO übernahm die Norm 1987 als ISO-8652:1987. Diese Version wird heute als Ada 83 bezeichnet, nach dem Jahr der ANSI-Normung. Ada 95, die gemeinsame ISO/ANSI-Norm ISO-8652:1995, wurde im Februar 1995 angenommen. Damit wurde Ada 95 zur ersten objektorientierten Programmiersprache mit einer ISO-Norm. Im Juni 2001 wurde die erste technische Korrektur gemäß den Statuten der ISO als ISO/IEC 8652:1995/Cor 1:2001 angenommen. Weitere Überarbeitungen sind März 2007 ISO/IEC-8652:1995/AMD 1:2007, informell Ada 2005, ISO/IEC 8652:2012, informell Ada 2012, und der aktuelle Standard ISO/IEC 8652:2012/Cor 1:2016. Eine neue Version, arbeitstechnisch Ada 202X genannt, ist kurz vor Vollendung.
Nach der Einführung Adas 1983 fiel die Anzahl der verwendeten Programmiersprachen im Verantwortungsbereich des US-amerikanischen Verteidigungsministeriums bis 1996 von über 450 auf 37. Das US-Verteidigungsministerium schrieb vor, dass jedes Softwareprojekt mit einem Anteil von mehr als 30 % neuem Code in Ada geschrieben werden musste. Diese Vorschrift wurde 1997 aufgehoben, zudem wurden häufig Ausnahmen genehmigt. In vielen anderen Staaten der NATO wurden ähnliche Vorschriften erlassen.
Um die Verbreitung des Standards und der Sprache allgemein zu unterstützen, finanzierte die US Air Force die Entwicklung des kostenfreien GNAT-Compilers. Die auf Sicherheit ausgelegten Spracheigenschaften von Ada alleine können Fehler nicht verhindern: Ariane V88, die erste Ariane 5, ging im Juni 1996 samt Nutzlast verloren, unter anderem weil ein arithmetischer Überlauf auftrat und für die vom Compiler generierte Ausnahme keine angemessene Ausnahmebehandlung implementiert worden war. Entgegen Bertrand Meyers Behauptung hätte auch die von ihm entwickelte Programmiersprache Eiffel den Verlust der Rakete nicht verhindert.[9] (Der Grund des Fehlschlags war die ungeprüfte Übernahme eines Codes von Ariane 4, der für deren Flugprofil ausgelegt war.) Im April 2008 kam Ada 2005 wieder in die Schlagzeilen, nachdem Lockheed Martin ein Update zum Flugsicherungssystem der Federal Aviation Administration vor der vereinbarten Lieferzeit und unter dem erwarteten Budget abgeliefert hatte.[10]
Hallo Welt in Ada
[Bearbeiten | Quelltext bearbeiten]Das Hallo-Welt-Programm in Ada:
with Ada.Text_IO;
procedure Hallo is
begin
-- Ausgabe des Textes "Hallo, Welt!".
Ada.Text_IO.Put_Line("Hallo, Welt!");
end Hallo;
Siehe auch
[Bearbeiten | Quelltext bearbeiten]- GNAT – GNU Ada Compiler
- GNAT Programming Studio (GPS)
- Ada Conformity Assessment Test Suite (ACATS)
Literatur
[Bearbeiten | Quelltext bearbeiten]- Manfred Nagl: Softwaretechnik mit Ada 95. Vieweg, ISBN 3-528-15583-3.
- Harry Feldmann: Programmieren mit Ada. Vieweg, ISBN 3-528-05205-8.
- Annette Weinert: Programmieren mit Ada und C. Vieweg, ISBN 3-528-05240-6.
- Diana Schmidt: Erfolgreich Programmieren mit Ada. Springer Verlag, ISBN 3-540-57689-4.
- Klaus P. Kratzer: ADA. Hanser Fachbuch, ISBN 3-446-16545-2.
Englisch
[Bearbeiten | Quelltext bearbeiten]- John Barnes: Programming in Ada 2012., ISBN 978-1-107-42481-4.
- Simon Johnston: Ada 95 for C and C++ Programmers.
- N.H. Cohen: Ada as a Second language. – sehr ausführlich.
- A. Burns und A. Wellings: Concurrency in Ada.
- Nell Dale, Chip Weems & John W. McCormick: Programming and Problem Solving with Ada 95 (2. Ausgabe), ISBN 978-0-7637-0792-7.
Referenzen
[Bearbeiten | Quelltext bearbeiten]Weblinks
[Bearbeiten | Quelltext bearbeiten]- comp.lang.ada (Newsgroup)
- A# – Ada für .NET/Mono
- Steelman On-Line
- Ada, C, C++, and Java vs. The Steelman
- Modula-3 and Ada
Tutorial
- Ada Vorlesungsskript ( vom 28. September 2007 im Internet Archive) (PDF; 1,4 MB) Vorlesungsskript mit Aufgaben, Lösungen ( vom 28. September 2007 im Internet Archive) (PDF; 88 kB), Beispielprogrammen ( vom 28. September 2007 im Internet Archive) (Beuth-Hochschule für Technik Berlin, Prof. Dr. Grude; 1,30 MB; ZIP)
- Ada 95: The Craft of Object-Oriented Programming (PDF; 1,4 MB) Online-Buch von John English
- The Big Online Book of Linux Ada Programming Online-Buch von Ken O. Burtch
Referenz und Glossar
- Ada Reference Manual – freie Ada-95-Online-Referenz
- Javier Miranda: A Detailed Description of the GNU Ada Run-Time. 2002
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ www.adahome.com.
- ↑ blog.adacore.com.
- ↑ John Barnes: High integrity software: the SPARK approach to safety and security. Pearson Education, Boston, Mass. 2003, ISBN 0-321-13616-0.
- ↑ Aonix ObjectAda – Product – Atego. In: atego.com. Archiviert vom (nicht mehr online verfügbar) am 6. August 2013; abgerufen am 17. Oktober 2011 (englisch).
- ↑ AdaMULTI IDE. In: ghs.com. Abgerufen am 17. Oktober 2011 (englisch).
- ↑ DDC-I: Ada Compilers. In: adacompiler.com. Abgerufen am 17. Oktober 2011 (englisch).
- ↑ IBM Software – Ada Developer Product Line. In: ibm.com. Abgerufen am 17. Oktober 2011 (englisch).
- ↑ XD ADA. In: swep-eds.com. Archiviert vom (nicht mehr online verfügbar) am 9. Mai 2014; abgerufen am 17. Oktober 2011 (englisch).
- ↑ Ken Garlington: Critique of “Put it in the contract: The lessons of Ariane”. In: lore.ua.ac.be. 7. August 1997, archiviert vom (nicht mehr online verfügbar) am 3. November 2011; abgerufen am 14. Oktober 2011 (englisch).
- ↑ Joab Jackson: The return of Ada. In: gcn.com. Archiviert vom (nicht mehr online verfügbar) am 11. August 2011; abgerufen am 17. Oktober 2011 (englisch).