====== Ada ====== * [[http://de.wikipedia.org/wiki/Ada_%28Programmiersprache%29|Ada]] * [[http://libre.adacore.com/tools/gps/|GNAT]] ist der Ada-Compiler des GNU-Projektes Ada wurde anfänglich stark vom US-Verteidigungsministerium gefördert und unterstützt. Die drei gängigen Versionen sind Ada 83 (das erste standardisierte Ada, das zunächst einfach nur Ada hieß, aber später zur Abgrenzung vom Nachfolger Ada 83 genannt wurde), Ada 95, das um zahlreiche neue Sprachmittel erweitert wurde und Ada 2005 (auch als Ada 05 bekannt), dessen Standardisierungsprozess 2007 abgeschlossen wurde. Ada-Compiler können sich einem standardisierten Test (Validierung) unterziehen, der praktisch Grundvoraussetzung für den professionellen Einsatz ist. Aufgrund der hohen Anforderung, 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. Herausragende Merkmale von Ada sind etwa das strenge Typsystem (starke Typisierung), zahlreiche Prüfungen zur Programmlaufzeit, Nebenläufigkeit, Ausnahmebehandlung und generische Systeme. 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, der Standard erlaubt dies jedoch. 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 und zu vermeiden. Für eine höhere Effizienz können diese Tests abgeschaltet werden. Auch zur Programmverifikation stehen verschiedene Spracheigenschaften zur Verfügung. Mit Ada ist es auch zum ersten Mal gelungen, Programme automatisch auf Korrektheit zu überprüfen. Dazu wird die Ada-Variante SPARK verwendet. Dies ist eine Untermenge von Ada mit speziellen Annotationen. Die Korrektheit eines SPARK-Programms wird mit einem Verifikationsprogramm (SPARK Examiner) durch statische Analyse der Annotationen überprüft.