|
Die Programmiersprache Ada

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 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.
Die Programmiersprache Ada ist besonders zu empfehlen bei der Erstellung von großen, langlebigen Softwareprojekten.
Die Programmiersprache Ada hat die folgenden Vorteile:
- Compiletime Checks:
Extensive Checks während der Compilierzeit. 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 eine Internationalen Standard definierte objektorientierte Programmiersprache. (Meines Wissens auch die einzige)
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 16 Jahre Erfahrung mit der Entwicklung von Software habe und die verschiedensten Programmiersprachen ausprobiert habe, ist für mich Ada die Programmiersprache meiner Wahl.
Compiler Validierung und Auswahl:
Für Ada83 war es vorgeschrieben, daß jeder Compiler einmal im Jahr validiert werden mußte.
Dadurch wurde sichergestellt, daß ein einheitlicher Ada-Standard implementiert ist. 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.
Frage:
Was wurde aus Jean Ichbiah?
|