Wacker Art Die Programmiersprache Ada Wappen der Familie Wacker
Der Traum
Bild: "Der Traum" 56,4cm x 42cm
Inspiriert haben mich zu diesem Bild die Arbeiten von Emil Nolde
Stiftung Seebüll Ada und Emil Nolde
Prolog Seitenanfang Die Programmiersprache Ada

Die Programmiersprache Ada

Ada Lovelace

Augusta Ada Byron, Countess of Lovelace

Some programms are elegant, some are exquisite, some are sparkling. My claim is that it is possible to write grand programms, noble programms, truly magnificent ones!

Donald Knuth, 1974 Turing Award Lecture.

  Die Programmiersprache Ada Prolog Hello World

Jean Ichbiah

Jean Ichbiah war ein französischer Informatiker, der die Programierspache Ada entwickelt hat.

Augusta Ada Byron

Die Programmiersprache Ada wurde benannt nach: Augusta Ada Byron, Countess of Lovelace.

Ada Lovelace war Mathematikerin und die Tochter des Dichters Lord Byron. Sie arbeitete für Charles Babbage an dessen "Analytical Engine" einer mechanischen Rechenmaschine und machte Vorschläge, zu deren Programmierung. Sie gilt deshalb als die erste Programmiererin.

Vorteile und Features der Programiersprache Ada

Die Verwendung der Programmiersprache Ada ist besonders zu empfehlen, bei der Erstellung von großen, langlebigen Softwareprojekten. Bei der Programmiersprache Ada stehen Robustheit der erstellten Programme und Lesbarkeit des Codes im Vordergrund.

  • Compiletime Checks
    Extensive Checks während der Compilierung des programmierten Ada-Codes. Dies führt dazu, dass die normalen Flüchtigkeitsfehler die bei anderen Programmiersprachen zu extremem Testaufwand führen, bei Ada schon während der Compilierzeit entdeckt werden. Der daraus resultierende verringerte Aufwand bei Test und Integration ist einer der Hauptgründe für die Kostenreduktion bei der Verwendung von Ada in großen Projekten.
  • Runtime Checks
    Während der Laufzeit eines Ada-Programmes werden definierte Checks durchgeführt. Bei der Verletzung dieser Regeln werden sofort Fehler ausgelöst. Durch die Verwendung von Exception Handlern, die Mann in jedem Block einbauen sollte, ist dann eine leichte Lokalisierung des Fehlers möglich.
  • Objektorientierung
    Ada ist eine durch einen Internationalen Standard definierte objektorientierte Programmiersprache. Grady Booch einer der Gurus der Objektorientierten-Softwareentwicklung und der UML (Unified Modeling Language) ist mit dem Buch "Software Engineering with Ada" bekannt geworden. Ada gehört zu den Programmiersprachen über die Objektorientierung und andere moderne Software Engineering Methoden wie Datenkapselung und "Information Hiding" verbreitet wurden.
  • Multitasking Innerhalb eines Programmes können mehrere Tasks definiert werden, die als selbständige Threads laufen. Dadurch kann man elegant die Behandlung von asynchronen Ereignissen und Datenströmen programmieren. Bei anderen Programmiersprachen muß man in der Regel auf die Thread- oder Prozesstruktur des Betriebssystems zugreifen und wird dadurch abhängig vom verwendeten Betriebssystem.
  • Modularisierung Das Ada Package Konzept bietet die Möglichkeit, die größten Softwareprojekte zu gliedern und zu modularisieren. Die separate Compilierbarkeit von Ada-Units ist ein mächtiges Werkzeuge um ein Software Projekt von einem großen Team durchzuführen.
  • Generische Komponenten Generische Komponenten sind ein mächtiges Werkzeug, mit dem sich wiederverwendbare Komponenten erzeugen lassen, die mit verschiedenen Datentypen, Prozeduren und Paketen parametrisiert werden können.
  • Portabilität Die Programmiersprache wird durch den Ada Sprachstandard definiert. Eine Validierung eines Ada-Compilers gegen den Ada Sprachstandard ist möglich und wird von den meisten Compilerherstellern durchgeführt. Dies sichert die Portierbarkeit zwischen verschiedenen Compilerherstellern und Hardwareplattformen. Tipp: Man sollte nur validierte Ada Compiler verwenden.
  • Language Interfaces Die Programmiersprache Ada hat definierte Schnittstellen zu anderen Programmiersprachen. Dadurch werden auch diese Schnittstellen plattformunabhängig. Insbesondere lassen sich dadurch vorhandene C-Komponenten elegant in ein Programm einbinden.
  • Error Recovery Durch den Exception Handling Mechanismus in Ada können Fehler abgefangen werden und auf den Fehler abgestimmte Programmschritte definiert werden.
    Tipp: Bauen Sie in jeden Block einen Exception Handler ein, der es ihnen ermöglicht einen währen der Laufzeit auftretenden Fehler zu lokalisieren und zu analysieren. Dies erleichtert Ihnen die Arbeit beim Testen und Integrieren.
  • Low-Level Features Mit Ada ist es möglich, jedes Bit einzeln zu manipulieren. Die hochentwickelten Ada Datenstrukturen lassen sich auf vordefinierte Bitmuster und Adressen abbilden.

Resümee: Ada ist nicht nur eine Programmiersprache sondern ist ein Werkzeugkasten für die Implementierung moderner Software-Engineering Methoden. Nach dem ich über 25 Jahre Erfahrung mit der Entwicklung von Software habe und die verschiedensten Programmiersprachen ausprobiert habe, ist für mich Ada die Programmiersprache.

Compiler-Validierung und Compiler-Auswahl

Für Ada83 war es vorgeschrieben, daß jeder Compiler einmal im Jahr zu validiert ist. Dadurch wurde sichergestellt, daß ein einheitlicher Ada-Standard von jedem Compiler implementiert war.

Dies führte zu einer hohen Portierbarkeit von Ada-Sourcen auf andere Zielsystem. In der Regel reicht eine Neucompilierung der Sourcen aus um wieder ein funktionierendes System zu bekommen. Dieser Zwang zur Validierung des Ada-Compilers wurde für Ada95 aufgehoben. Meine Empfehlung ist nur validierte Ada-Compiler zu verwenden. Dadurch wird sichergestellt, daß der Compiler entsprechend des Ada-Standards implementiert ist. Bei nicht validierten Ada-Compilern soll es vorgekommen sein, daß diese nicht vollständig entsprechend des Ada-Standards implementiert sind. Ein Hinweis noch: Beim Ada95-Standard gibt es einen Kernstandard und "Special Need" Annexe, die in der Regel nicht alle implementiert sind. Vor der Auswahl eines Compilers sollte man sich deshalb überlegen, welche Annexe für das eigene Projekt implementiert sein müssen. Dies gilt insbesondere für die Portierung einer Ada-Application auf ein anderes Zielsystem. Für das saubere Arbeiten einer Multitasking Applikation empfehle ich z.b. die Implementierung des Realtime Annexes. Da dieser ein sauberes Task Scheduling erzwingt (Preemtive Scheduling). Wenn das Ada-Laufzeitsystem mit einem Betriebssystem zusammen arbeitet, so sind Implementierungen zu empfehlen, die Ada-Tasks auf Threats des Betriebssystems abbilden. Dies gilt insbesondere für Implementierungen auf Unix Systemen. Dies stellt sicher, daß nicht das gesamte Ada-Multitaskingsystem zum Stehen kommt, wenn aus einer Ada-Task heraus ein Betriebssystem Aufruf erfolgt.

Ada und sicherheitskritische Systeme

In mehreren internationalen Standards zur Entwicklung sicherheitsrelevanter Systeme (z.B. IEC 61508, EN 50128 und DO-178B) wird Ada explizit als "highly recommended" geführt! Ada wird deshalb häufig bei sicherheitskritischen Systemen eingesetzt. Ein Beispiel für den Einsatz von Ada in sicherheitskritischen Systemen ist die Software der Boeing 777 die zu 99,9% in Ada geschrieben wurde.

Ferienland Waldeck
Bild: "Ferienland Waldeck"
Ada-Code Hallo World Die Programiersprache Ada Beispiel
Ferienland Waldeck
Bild: "Ferienland Waldeck"
Ada-Code Beispiele Hello World GNAT Ada-Compiler

Beispiel 1: Ein- und Ausgabe von Aufzählungstypen

Das Programm erzeugt die folgenden Ausgaben:

Beispiel 2: Generisches Paket zur Zeilen orientierten Kommando Ein-/Ausgabe mit der Programmiersprache Ada

Ferienland Waldeck
Bild: "Ferienland Waldeck"
Der GNAT Ada-Compiler Die Programiersprache Ada Beispiel
Ferienland Waldeck
Bild: "Ferienland Waldeck"
Ada-Links GNAT Ada-Compiler Seitenende
Ferienland Waldeck
Bild: "Ferienland Waldeck"
15. September 2012 Version 3.0
Copyright: Hermann Wacker Uhlandstraße 10 D-85386 Eching bei Freising Germany Haftungsausschluß