Mithilfe von »Pragma Restrictions« kann der Benutzer verschiedene Einschränkungen des Sprachumfangs von Ada implementieren, die zur Zertifizierung der Applikation gefordert werden. Anstatt im Code-Review den Code nach Verletzungen zu durchsuchen, übernimmt hier der Compiler diesen Job. Sind zum Beispiel rekursive Prozeduren nicht erlaubt, wird dies einfach mit dem »pragma Restriction(NO_RECURSION)« implementiert, und der Compiler kann erkennen, ob diese Restriktion verletzt wurde.
Das »Ravenscar Profile« wurde auf dem 8. International Real-Time Ada Workshop definiert. Es fasst die Restriktionen für sicherheitskritische Echtzeitapplikationen zusammen. Zum Beispiel werden im Bild 7 die Restriktionen »No_Task_Hirarchie« und »No_Recursion« verletzt, da der Haupttask einen Kind-Task erzeugt (Zeile 5) und eine Prozedur rekursiv aufgerufen wird (Zeile 14).
Im Kasten »Vergleich zwischen C und Ada« sind die Vorteile von Ada gegenüber C herausgestellt.
Vergleich zwischen C und Ada |
---|
In den hier vorgestellten Beispielen können wir folgende Vorteile gegenüber C feststellen: - Restrictions und Profile-Pragmas beschleunigen den Zertifizierungsprozess für sicherheitskritisch Projekte, da viele manuelle Checks durch den Compiler automatisiert werden. - Mithilfe des Contract-basierten Programmierens seit Ada 2012 wird der Weg zur Zertifizierung weiter beschleunigt. - Ada ist eine Sprache mit strengen Typen. Für einen »type number is range 0 .. 9« wird eine Exception ausgelöst, wenn diesem Typ beispielsweise der Wert 10 zugewiesen wird. - Generierter Code, beispielsweise von »HALCoGen«, hat eine Menge toten Code. Derselbe Code, in Ada geschrieben, ist einfacher zu warten und hat keine »Codeleichen«. - Ada ist nicht so weit verbreitet wie C, und so gibt es wenige Programmierer, die Ada beherrschen. Aber Ada ist nicht so schwer zu erlernen; es lohnt sich also zu überlegen, auf Ada zu migrieren. Zudem ist Ada auch stark in der Einbindung anderer Sprachen. |