Ada95
You don't know what real time-critical software is until you're responsible for the paychecks of a battalion of heavily armed Marines. (Jemand in asr)
Ada ist eine objektorientierte, sicherheitsorientierte ProgrammierSprache, die 1983 zum ersten mal standardisiert wurde. Die aktuelle Version des Standards ist das Ada Reference Manual 1995. Damit ist Ada lustigerweise die erste objektorientierte Sprache der Welt, die international standardisiert wurde.
Die Arbeit an einem neuen Standard (Ada0Y) ist in vollem Gange.
Der Name
Ada (sic! - nicht ADA) ist der Vorname von AdaByronKing, Countess of Lovelace, einer unheimlich faszinierenden Frau. Sie war die Gefährtin von CharlesBabbage, dem Erfinder der DifferenzMaschine. Sie hat die erste ProgrammierSprache der Welt erfunden und viele der heutigen Einsatzmöglichkeiten von Computern vorhergesehen.
Die Philosphie der Sprache:
1.) Sicherheit - Ada ist eine Sprache für Anwendungen, deren Fehlschlagen Menschenleben kostet.
2.) Wartbarkeit - Typische Adaprogramme haben eine sehr lange Lebenszeit. Deshalb wird Ada auch gerne mal als das COBOL des US-Verteidigungsministeriums verspottet.
Deshalb:
Menschen machen Fehler - Der Compiler soll möglichst viele dieser Fehler finden.
Menschen machen Fehler und sind faul - Deshalb soll die bequehmste Methode, ein Problem zu lösen, auch immer die sicherste sein.
Programme werden nur einmal geschrieben aber unzählige Male gelesen - Kürze wird zugunsten von Lesbarkeit geopfert.
Portabilität - ein Adaprogrammierer soll sich möglichst nicht darum kümmern müssen, welche Betriebssysteme von den Anwendern des Programms eingesetzt werden.
Klarheit - alle Eigenschaften der Sprache sind so genau wie möglich zu definieren. (Im Gegensatz zu C, wo praktisch alle wichtigen Sachen undefiniert oder implementationsabhängig sind)
Flexibilität - Wo es nötig ist, kann auch gefährlicher, hardwarenaher Code geschrieben werden. Die Sprache soll den Entwickler lenken, aber nicht aufhalten.
Typsicherheit - Das Typsystem von Ada ist für Anfänger entnervend streng, bietet dem Fortgeschrittenen jedoch viele Vorteile.
Das Ada Reference Manual 95
Dies ist der einzuhaltende Standard.
Er wird durch optionale Erweiterungen, die sich special needs annex nennen, ergänzt. Diese Anhänge kümmern sich um Sachen wie MultiTasking (eine bequehme Abstraktion von InterProzessKommunikation oder MultiThreading), HardwarenaheProgrammierung, VerteiltesRechnen in Netzwerken, RealTimeSysteme, NumberCrunching, etc.
Ein Compiler darf sich erst Adacompiler nennen, wenn er eine umfangreiche und ständig wachsende Testsuite bestanden hat. Ein Compiler kann auf die annexes verzichten, muss sie aber entweder vollständig und korrekt oder eben gar nicht mitliefern. Halbe Sachen wie bei C++ gibt es nicht: http://www.adaic.com/compilers/index.html
hauptsächliche Einsatzgebiete
EmbeddedSystems, RealTimeSysteme, aber auch Informationssysteme in kritischen Bereichen:
- Luftfahrt - Steuerung von Flugzeugen (Boeing Jumbos, Tornado, Eurofighter, ...), Lotsensysteme, Radarelektronik, ...
- Waffensysteme - Hellfire, smart bombs (JDAM), Panzerhaubitzen, Cruise Missiles (Tomahawk), ...
- Raumfahrt - Ariadneprogramm, Marsmissionen, ...
- medizinische Anwendungen
- Steuerung von Kraftwerken, speziell Kernkraftwerken.
- Informations- und Simulationssysteme (Software für "Kriegsspiele" der NATO)
in letzter Zeit zunehmend freie Sofware für Server und Workstations - OpenToken, GVD, AWS, GPS (eine IDE, nicht die Satelliten), Applets und Servlets für die Java VM, ...
- ...
freie Werkzeuge zum Lesen und Testen
Wer sich das Codelesen vereinfachen will und nicht selber daraufkommt: Zumindest vim, (X)EMACS, Nedit und Kwrite (Kate) haben Adamodi, die wenigstens Syntaxhighlighting beherrschen. Bei vim gibt es auch schon ein nettes plugin für's indenting.
Wer diverse Hypothesen über das Funktionieren der Software austesten will, sollte GNAT 3.14p (oder gnat3.15p) installieren. GNAT liegt mittlerweile eigentlich allen ernstzunehmenden Distribution bei. Zum Paket gehören meist neben dem eigentlichen Compiler (und der standardisierten Lib) auch ein paar nette Werkzeuge:
- gnatgdb, ein Gnu Debugger mit Support für Adaspezialitäten.
- gnatddd, der Data Display Debugger mit Support für Adaspezialitäten.
- gnathtml generiert hübschen kreuz- und querverlinkten HTML-Code aus Adasourcen, mit Syntaxhighlighting. Da macht das Codebrowsen halbwegs Spass. Leider hat gnathtml einen Bug mit der Übersetzung von spitzen Klammern
- gnatfind findet Bezeichner in den Quelltexten.
- gnatxref listet einen Report über alle verwendeten Bezeichner auf.
- gnatls listet Information über kompilierte Dateien auf.
Last but not least:
glide ist ein zur vollständigen und komfortablen Ada-IDE aufgebohrter GnuEmacs. Sehr empfehlenswert! (Der Nachfolger GPS - eine an VisualBlah orientierte IDE ist in der Entwicklung)
Dringend besorgen sollte man sich *GVD*, den GnuVisualDebugger.
Resourcen
AdaPower, eine wichtige Anlaufstelle für Tutorials und freie Software
Ada Information Clearinghouse, eine Website der Ada Resource Association
Stolperfallen
- Ada sieht zwar Pascal oder Delphi ähnlich, hat aber nichts mit ihnen zu tun.
Bei GCC 3.XY wird ein gnat (gnat 3.XY) mitgeliefert. Das ist (noch) kein Adacompiler, da er noch zu unvollständig ist und zu viele Bugs enthält.
Fragen und Antworten
Wer wacht eigentlich darüber bzw. welches Gesetz verbieter mir, irgendetwas als AdaCompiler zu bezeichnen?
(Im Endeffekt ist das vermutlich eine warenzeichenrechtliche Sache. Tatsächlich darf auch kein selbsternannter C++-Compiler behaupten, er implementiere den Iso-Standard, wenn er es nicht wirklich tut. Derzeit gibt es nur anscheinen keinen einzigen derartigen Compiler, und was die existierenden vorgeben zu implementieren... nun ja. Die durchaus angebrachten Beschimpfungen sollten hier in Richtung Compilerbauer gehen, nicht in Richtung Standardkommitee.)
Exakt. Ada ist ein Trademark (IIRC im Besitz des US DoD, eventuell auch schon auf die ARA übergegangen).
Ada95 ist ISO-Standard:
ISO/IEC 8652:1995 Information Technology -- Programming Languages -- Ada
ISO/IEC 8652:1995/Cor 1:2001 Information Technology -- Programming Languages -- Ada
Ausserdem ist die Konformität ein wichtiger Bestandteil des Marketings bei Adacompilern. Vorgetäuschte ISO-Konformität wäre damit eine Täuschung des Käufers und in vielen Ländern illegal.
Die Testsuite wird heute von der ARA (Ada Resource Association) unter Oberherrschaft der ISO gepflegt. Das eigentliche Testen übernehmen Labs im Auftrag von ARA und Compiler Vendors. Früher war das US-Verteidigungsministerium dafür zuständig.
Näheres zu den Konformitätstests: http://www.adaic.com/compilers/acaa.html
