ADA (Programmiersprache)
Paradigma | Multi-Paradigma: strukturiert, Imperativ, objektorientierter, Aspektorientiert,[1] gleichzeitig, Array, verteilt, generisch, prozedural, Meta |
---|---|
Familie | Pascal |
Entworfen von |
|
Erstmals erschienen | Februar 1980 |
Stabile Version | |
Disziplin tippen | statisch, stark, sicher, Nominativ |
OS | Multi- oder plattformübergreifend |
Dateiname -Erweiterungen | .ADB, .Ads |
Webseite | www |
Haupt Implementierungen | |
Adacore MÜCKE,[4] Software Green Hills Optimierung von ADA 95 Compiler, PTC Apexada und Objectada,[5] Mapusoft ADA-C/C ++-Changer,[6] Früher als "adamagisch mit C -Zwischenprodukt" bekannt,[7] DDC-I Punktzahl | |
Dialekte | |
FUNKE, Ravenscar -Profil | |
Beeinflusst von | |
Algol 68, Pascal, Simula 67,[8] C ++ (ADA 95), Smalltalk (ADA 95), Modula-2 (ADA 95) Java (ADA 2005), Eiffel (ADA 2012) | |
Beeinflusst | |
C ++, Kapelle,[9] Drago,[10] D, EiffelGriffin, Griffin,[11] Java, Nim, Parasail, PL/sql, PL/PGSQL, Python, Rubin, Samen7, Sparante,[12] Sparkel, SQL/PSM, VHDL | |
|
Ada ist ein strukturiert, statisch typisiert, Imperativ, und objektorientierter Programmiersprache auf hoher Ebene, erweitert von Pascal und andere Sprachen. Es hat eine eingebaute Sprachunterstützung für Entwurf durch Vertrag (DBC), extrem Starke Typisierung, explizite Parallelität, Aufgaben, synchrones Nachrichtenübergeben, geschützte Objekte und Nichtdeterminismus. ADA verbessert die Sicherheit und Wartbarkeit der Code, indem sie die verwenden Compiler Fehler zugunsten zugunsten von Laufzeit Fehler. Ada ist ein International Technischer Standard, gemeinsam definiert durch die Internationale Standardisierungsorganisation (ISO) und die Internationale Elektrotechnische Kommission (IEC). Ab 2020[aktualisieren], der Standard, ADA 2012, informell,[13] ist ISO/IEC 8652: 2012.[14]
Ada wurde ursprünglich von einem Team von Französisch entworfen Informatiker Jean Ichbiah von CII Honeywell Bull unter Vertrag an die Verteidigungsministerium der Vereinigten Staaten (DOD) von 1977 bis 1983, um über 450 Programmiersprachen zu ersetzen, die vom DOD zu dieser Zeit verwendet wurden.[15] ADA wurde nach benannt Ada Lovelace (1815–1852), der als erster Computerprogrammierer gutgeschrieben wurde.[16]
Merkmale
ADA war ursprünglich für für eingebettet und Echtzeit Systeme. Die ADA 95 Revision, entworfen von S. Tucker Taft von Intermetrie Zwischen 1992 und 1995 verbesserte Unterstützung für Systeme, numerische, finanzielle und Objekt orientierte Programmierung (OOP).
Zu den Merkmalen von ADA gehören: Starke Typisierung, Modulare Programmierung Mechanismen (Pakete), Laufzeitprüfung, Parallelverarbeitung (AufgabenSynchron Nachrichtenübergang, geschützte Objekte und nichtdeterministisch Wählen Sie Aussagen), Ausnahmebehandlung, und Generika. ADA 95 fügte Unterstützung für die Unterstützung Objekt orientierte Programmierung, einschließlich Dynamischer Versand.
Die Syntax von ADA minimiert die Auswahl der Möglichkeiten, grundlegende Operationen auszuführen, und bevorzugt englische Schlüsselwörter (wie "oder sonst" und "und dann") den Symbolen (wie "||" und "&&"). ADA verwendet die grundlegenden arithmetischen Operatoren "+", "-", "*" und "/", vermeidet jedoch andere Symbole. Codeblöcke werden durch Wörter wie "Declare", "Begin" und "End" abgelehnt, wo das "Ende" (in den meisten Fällen) die Kennung des Blocks folgt (z. B.. Wenn ... Ende wenn, Schleife ... Endschleife). Bei bedingten Blöcken vermeidet dies a sonst baumeln Das könnte mit der falschen verschachtelten If-Expression in anderen Sprachen wie C oder Java kombinieren.
ADA ist für die Entwicklung sehr großer Softwaresysteme ausgelegt. ADA -Pakete können separat zusammengestellt werden. ADA -Paketspezifikationen (die Paketschnittstelle) können auch ohne Implementierung separat zusammengestellt werden, um die Konsistenz zu überprüfen. Dies ermöglicht es, Probleme während der Entwurfsphase vor Beginn der Implementierung zu erkennen.
Eine große Anzahl von Kompilierungszeitprüfungen wird unterstützt, um Fehler zu vermeiden, die erst in einigen anderen Sprachen erfasst werden können, oder dass explizite Überprüfungen zum Quellcode hinzugefügt werden müssen. Beispielsweise erfordert die Syntax explizit benanntes Schließen von Blöcken, um Fehler aufgrund nicht übereinstimmender End -Token zu verhindern. Die Einhaltung starker Typisierung ermöglicht das Erkennen vieler häufiger Softwarefehler (falsche Parameter, Bereichsverstöße, ungültige Referenzen, nicht übereinstimmende Typen usw.) entweder während der Kompilierungszeit oder auf andere Weise während der Laufzeit. Da die Parallelität Teil der Sprachspezifikation ist, kann der Compiler in einigen Fällen potenzielle Sackgassen erkennen.[17] Compiler suchen häufig nach falsch geschriebenen Kennungen, Sichtbarkeit von Paketen, redundanten Erklärungen usw. und können Warnungen und nützliche Vorschläge zur Behebung des Fehlers abgeben.
ADA unterstützt auch Laufzeitprüfungen, um vor dem Zugang zu nicht zugewiesener Speicher zu schützen. Pufferüberlauf Fehler, Reichweite Verstöße, Auslösende Fehler, Array -Zugriffsfehler und andere erkennbare Fehler. Diese Überprüfungen können im Interesse der Laufzeit -Effizienz deaktiviert werden, können jedoch häufig effizient zusammengestellt werden. Es enthält auch Einrichtungen zur Hilfe Programmüberprüfung. Aus diesen Gründen wird ADA in kritischen Systemen häufig verwendet, wo jeder Anomalie könnte zu sehr schwerwiegenden Folgen führen, z. B. Unfalltod, Verletzungen oder schweren finanziellen Verlusten. Beispiele für Systeme, bei denen ADA verwendet wird Avionik, Luftraumüberwachung, Eisenbahnen, Bankwesen, Militär- und Weltraumtechnologie.[18][19]
Adas Dynamik Speicherverwaltung ist hochrangig und typerisch. ADA hat keine generischen oder untypen Zeiger; Es wird auch nicht implizit einen Zeigertyp deklariert. Stattdessen müssen alle dynamischen Speicherzuweisung und Deallokation über explizit deklariert werden Zugangstypen. Jeder Zugriffstyp ist zugeordnet Aufbewahrungspool Das kümmert sich um die Details der Speicherverwaltung auf niedriger Ebene. Der Programmierer kann entweder den Standardspeicherpool verwenden oder neue definieren (dies ist besonders relevant für Ungleichmäßiger Speicherzugriff). Es ist sogar möglich, mehrere verschiedene Zugriffstypen zu deklarieren, die alle denselben Typen benennen, aber verschiedene Speicherpools verwenden. Auch die Sprache sorgt für Barrierefreiheitsprüfungensowohl zur Kompilierungszeit als auch zur Laufzeit stellt das sicher, dass ein Zugangswert Ich kann den Typ des Objekts, auf das es hinweist, nicht überlösen.[20]
Obwohl die Semantik der Sprache automatisch erlaubt Müllsammlung Von unzugänglichen Objekten unterstützen die meisten Implementierungen dies standardmäßig nicht, da dies in Echtzeitsystemen unvorhersehbares Verhalten verursachen würde. ADA unterstützt eine begrenzte Form von Regionbasierte Speicherverwaltung; Außerdem kann der kreative Einsatz von Aufbewahrungspools eine begrenzte Form der automatischen Müllsammlung ermöglichen, da die Zerstörung eines Aufbewahrungspools auch alle Objekte im Pool zerstört.
Ein Doppel-Bindestrich ("-"), der einem ähnelt und einem EM Dash, bezeichnet Kommentartext. Kommentare stoppen am Ende der Zeile, um zu verhindern, dass nicht abgesetzte Kommentare versehentlich ganze Abschnitte des Quellcode entleeren. Das Deaktivieren eines ganzen Codeblocks erfordert nun das Präfix jeder Zeile (oder Spalte) einzeln mit "-". Während eindeutig deaktivierten Code mit einer Spalte von wiederholtem "-" auf der Seite die experimentelle Entbindung/Wiederaufnahme großer Blöcke ein ausgezeichneterer Prozess darstellt.
Das Semikolon (";") ist a Erklärung Terminatorund die Null- oder No-Operation-Erklärung ist Null;
. Ein einzelnes ;
ohne eine Erklärung zu beenden ist nicht zulässig.
anders als die meisten ISO Standards, die ADA -Sprachdefinition (bekannt als die ADA -Referenzhandbuch oder ARModer manchmal das Sprachreferenzhandbuch oder LRM) ist Kostenloser Inhalt. Somit ist es eine häufige Referenz für ADA -Programmierer, nicht nur Programmierer, die ADA -Compiler implementieren. Neben dem Referenzhandbuch gibt es auch ein umfangreiches Begründungdokument, das das Sprachdesign und die Verwendung verschiedener Sprachkonstrukte erläutert. Dieses Dokument wird auch von Programmierern häufig verwendet. Als die Sprache überarbeitet wurde, wurde ein neues Begründung Dokument geschrieben.
Einer bemerkenswert gratis Software Tool, das von vielen ADA -Programmierern verwendet wird, um sie beim Schreiben von ADA -Quellcode zu unterstützen, ist der GNAT -Programmierstudio, Teil von GNU Compiler -Sammlung.
Geschichte
In den 1970er Jahren die US -Verteidigungsministerium (DOD) wurde besorgt über die Anzahl verschiedener Programmiersprachen, die für seine eingebetteten Computersystemprojekte verwendet wurden, von denen viele veraltet oder hardwareabhängig waren und keine sichere modulare Programmierung unterstützte. 1975 a Arbeitsgruppe, das Arbeitsgruppe mit hoher Ordnung Sprache (HOLWG) wurde mit der Absicht gebildet, diese Zahl zu reduzieren, indem eine Programmiersprache gefunden oder erstellt wird, die im Allgemeinen für die Abteilung und die Abteilung geeignet sind Britisches VerteidigungsministeriumAnforderungen. Nach vielen Iterationen, die mit einem Original beginnen Strohmann Vorschlag Die eventuelle Programmiersprache wurde ADA genannt. Die Gesamtzahl der für solche Projekte verwendeten Programmiersprachen auf hoher Ebene fiel von über 450 im Jahr 1983 auf 37 bis 1996.
Die Holwg -Arbeitsgruppe hat die erstellt Stahlmannsprachanforderungen, Eine Reihe von Dokumenten, in denen die Anforderungen enthielten, die eine Programmiersprache erfüllen sollte. Viele vorhandene Sprachen wurden offiziell überprüft, aber das Team kam 1977 zu dem Schluss, dass keine vorhandene Sprache die Spezifikationen entsprach.
Anträge auf Vorschläge für eine neue Programmiersprache wurden ausgestellt, und vier Auftragnehmer wurden engagiert, um ihre Vorschläge unter den Namen von Red (rot zu entwickeln (rotIntermetrie angeführt von Benjamin Brosgol), grün (grün (CII Honeywell Bull, geführt von Jean Ichbiah), Blau (Softech, angeführt von John Goodenough)[21] und gelb (SRI International, angeführt von Jay Spitzen). Im April 1978 gingen die roten und grünen Vorschläge nach öffentlicher Prüfung an die nächste Phase. Im Mai 1979 wurde der grüne Vorschlag, der von Jean Ichbiah von CII Honeywell Bull entworfen wurde Augusta Ada, Gräfin von Lovelace. Dieser Vorschlag wurde von der Sprache beeinflusst Lis dass Ichbiah und seine Gruppe in den 1970er Jahren entwickelt hatten. Das vorläufige ADA -Referenzhandbuch wurde im Juni 1979 in ACM Sigplan Notices veröffentlicht. Das militärische Standard -Referenzhandbuch wurde am 10. Dezember 1980 genehmigt (Ada LovelaceGeburtstag) und erhielt die Zahl mil-std-1815 zu Ehren von Ada Lovelaces Geburtsjahr. 1981,, C. A. R. Hoare nutzte seine Turing Award Rede, ADA zu kritisieren, weil er übermäßig komplex und damit unzuverlässig ist,[22] Aber später schien es in dem Vorwort zu rezentieren, das er für ein ADA -Lehrbuch schrieb.[23]
ADA hat in den frühen Tagen von der Programmgemeinschaft als Ganzes viel Aufmerksamkeit auf sich gezogen. Seine Unterstützer und andere sagten voraus, dass es zu einer dominanten Sprache für allgemeine Programmierung und nicht nur Verteidigung im Zusammenhang mit der Arbeit werden könnte.[24] Ichbiah erklärte öffentlich, dass innerhalb von zehn Jahren nur zwei Programmiersprachen bleiben würden: ADA und Lispeln.[25] Frühe ADA-Compiler kämpften darum, die große, komplexe Sprache zu implementieren, und sowohl die Kompilierzeit- als auch die Laufzeitleistung waren tendenziell langsam und die Werkzeuge primitiv.[24] Compiler-Anbieter trugen die meisten ihrer Bemühungen auf, die massive, sprachkonformenstestende, von der Regierung erhobene "ACVC" -Validierungssuite zu verabschieden, die in einem anderen neuartigen Merkmal der ADA-Sprachbemühungen erforderlich war.[25] Die Jargon -Datei, ein Wörterbuch von Computer Hacker Slang, das 1975–1983 stammt, stellt fest Eintrag auf ADA Das "Es ist genau das, was man angesichts dieser Art von Bestätigung durch Fiat; vom Ausschuss entworfenen ... schwer zu bedienende und insgesamt eine katastrophale, milliarden Dollar Boondoggle ... Ada Lovelace ... mit ziemlicher Sicherheit blanchieren würde Nach Verwendung wurde ihr Name zuletzt in die Tat eingerichtet. Das Schöne, was darüber gesagt wurde, ist, dass es wahrscheinlich eine gute kleine Sprache gibt, die schreit, um in seiner riesigen Elefantinen auszusteigen. "
Die erste validierte ADA -Implementierung war der NYU ADA/ED -Übersetzer.[26] Zertifiziert am 11. April 1983. NYU ADA/ED ist in der hochrangigen Set-Sprache implementiert Setl.[27] Mehrere kommerzielle Unternehmen bieten ADA -Compiler und zugehörige Entwicklungstools an, einschließlich ALSYS, Telesoft, DDC-I, Erweiterte Computertechniken, Tartanlabors, Irvine Compiler, TLD -Systeme, und Verdix.[28] Computerhersteller, die ein bedeutendes Geschäft in der Verteidigung, in der Luft- und Raumfahrt oder in verwandten Branchen hatten, boten auch ADA -Compiler und Tools auf ihren Plattformen an. diese enthielten Concurrent Computer Corporation, Cray Research, Inc., Harris Computersysteme, und Siemens Nixdorf InformationsSystem AG.[28]
1991 verlangte das US -Verteidigungsministerium die Verwendung von ADA (die ADA -Mandat) für alle Software,[29] obwohl Ausnahmen zu dieser Regel oft gewährt wurden.[24] Das Verteidigungsministerium ADA-Mandat wurde 1997 effektiv entfernt, als der DOD begann, kommerzielle Off-the-Shelf zu nehmen (Kinderbetten) Technologie.[24] Ähnliche Anforderungen bestand in anderen NATO Länder: ADA war für NATO-Systeme erforderlich, die Kommando und Kontrolle und andere Funktionen beinhalteten, und ADA war die vorgeschriebene oder bevorzugte Sprache für Verteidigungsanträge in Ländern wie Schweden, Deutschland und Kanada.[30]
In den späten 1980er und frühen 1990er Jahren hatten sich die ADA-Compiler in der Leistung verbessert, aber es gab immer noch Hindernisse, die Fähigkeiten von ADA vollständig auszunutzen, einschließlich eines Aufgabenmodells, das sich von dem unterschieden, was die meisten Echtzeitprogrammierer gewohnt waren.[25]
Wegen Ada's Sicherheitskritisch Support -Funktionen, es wird jetzt nicht nur für militärische Anwendungen verwendet, sondern auch in kommerziellen Projekten, bei denen ein Software -Fehler schwerwiegende Konsequenzen haben kann, z. B.,, Avionik und Luftraumüberwachung, kommerzielle Raketen wie die Ariane 4 und 5, Satelliten und andere Weltraumsysteme, Eisenbahnverkehr und Bankgeschäft.[19] Zum Beispiel die Flugzeuginformationsmanagementsystem, das Fly-by-Wire Systemsoftware in der Boeing 777, wurde in ada geschrieben.[31][32] Entwickelt von Honeywell -Lufttransportsysteme in Zusammenarbeit mit Beratern von DDC-IEs wurde wohl das bekannteste ADA-Projekt, Zivil- oder Militärprojekt.[31][32] Das kanadische automatisierte Flugverkehrssystem wurde in 1 Million ADA -Zeilen geschrieben (Sloc zählen). Es war Fortgeschrittene verteilte Verarbeitung, eine verteilte ADA-Datenbank und objektorientiertes Design. ADA wird auch in anderen Flugverkehrssystemen verwendet, z. B. dem Luftverkehrskontrollsystem (Großbritanniens) zur Unterstützung des zukünftigen Gebietskontrollwerkzeugs (IFACTs) der nächsten Generation. FUNKE Ada.[33] Es wird auch in der verwendet Französisch TVM in-CAB -Signalübertragung System auf der TGV Hochgeschwindigkeits-Schienenverkehr und die Vorstadtzüge in Metro in Paris, London, Hongkong und New York City.[19][34]
Standardisierung
Die Sprache wurde eine Ansi Standard im Jahr 1983 (ANSI/MIL-STD 1815a) und nach der Übersetzung in Französisch und ohne weitere Veränderungen in englischer Sprache wurde 1987 zu einem ISO-Standard (ISO-8652: 1987). Diese Version der Sprache wird allgemein als ADA 83 bezeichnet, ab dem Datum ihrer Annahme durch ANSI, wird jedoch ab dem Datum ihrer Annahme durch ISO manchmal auch als ADA 87 bezeichnet.
ADA 95, der gemeinsame ISO/IEC/ANSI -Standard (StandardISO/IEC 8652: 1995) wurde im Februar 1995 veröffentlicht, wodurch ADA 95 die erste iSO-Standard-objektorientierte Programmiersprache gemacht wurde. Um die Standardrevision und die zukünftige Akzeptanz zu unterstützen, die US-Luftwaffe finanzierte die Entwicklung der MÜCKE Compiler. Derzeit ist der Gnat -Compiler Teil der GNU Compiler -Sammlung.
Die Arbeiten haben weiterhin die Verbesserung und Aktualisierung des technischen Inhalts der ADA -Sprache. Im Oktober 2001 wurde ein technischer Corrigendum zu ADA 95 veröffentlicht, und ein großer Änderungsantrag. ISO/IEC 8652: 1995/AMD 1: 2007 wurde am 9. März 2007 veröffentlicht.
Auf der ADA-Europe 2012-Konferenz in Stockholm kündigten die ADA Resource Association (ARA) und ADA-Europe die Fertigstellung des Designs der neuesten Version der ADA-Sprache und die Einreichung des Referenzhandbuchs an die ISO/IEC JTC 1/SC 22/Wg 9 der Internationale Standardisierungsorganisation (ISO) und die Internationale Elektrotechnische Kommission (IEC) zur Genehmigung. ISO/IEC 8652: 2012 wurde im Dezember 2012 veröffentlicht.[14]
Andere verwandte Standards umfassen ISO/IEC 8651-3: 1988 Informationsverarbeitungssysteme - Computer -Grafiken - Sprachbindungen für Grafik Kernel System (GKS) - Teil 3: ADA.
Sprachkonstrukte
Ada ist ein Algol-ähnliche Programmiersprache mit Kontrollstrukturen mit reservierten Wörtern wie z. wenn, dann, anders, während, zum, usw. ADA verfügt jedoch auch über viele Datenstrukturanlagen und andere Abstraktionen, die nicht im Original enthalten waren Algol 60, wie zum Beispiel Tippen Sie Definitionen ein, Aufzeichnungen, Zeiger, Aufzählungen. Solche Konstrukte wurden teilweise von oder inspiriert von Pascal.
"Hallo Welt!" in ada
Ein gemeinsames Beispiel für die einer Sprache Syntax ist der Hallo Weltprogramm: (hallo.adb)
mit Ada.text_io; verwenden Ada.text_io; Verfahren Hallo ist Start Put_line ("Hallo Welt!"); Ende Hallo;
Dieses Programm kann mit dem frei verfügbaren Open -Source -Compiler zusammengestellt werden MÜCKEdurch Ausführung
gnatmake hello.adb
Datentypen
Das Typ -System von ADA basiert nicht auf einem Satz von vordefinierten primitive Typen Ermöglicht Benutzern jedoch, ihre eigenen Typen zu deklarieren. Diese Erklärung basiert wiederum nicht auf der internen Darstellung des Typs, sondern auf der Beschreibung des Ziels, das erreicht werden sollte. Auf diese Weise kann der Compiler eine geeignete Speichergröße für den Typ ermitteln und Verstöße gegen die Typdefinition zur Kompilierungszeit und die Laufzeit (d. H. Bereichsverstöße, Pufferüberschreitungen, Typkonsistenz usw.) überprüfen. ADA unterstützt numerische Typen, die durch einen Bereich, Modulo -Typen, Aggregatentypen (Datensätze und Arrays) und Aufzählungsarten definiert sind. Zugriffstypen definieren einen Verweis auf eine Instanz eines bestimmten Typs. Untyped -Zeiger sind nicht erlaubt. Spezielle Typen der Sprache sind Aufgabentypen und geschützte Typen.
Zum Beispiel kann ein Datum dargestellt werden als:
Typ DAY_TYPE ist Angebot 1 .. 31; Typ Monat_Type ist Angebot 1 .. 12; Typ Jahr_Type ist Angebot 1800 .. 2100; Typ Std ist Mod 24; Typ Wochentag ist (Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag); Typ Datum ist Aufzeichnung Tag : DAY_TYPE; Monat : Monat_Type; Jahr : Jahr_Type; Endaufzeichnung;
Typen können durch Deklaration verfeinert werden Subtypen:
Subtyp Arbeitszeit ist Std Angebot 0 .. 12; - höchstens 12 Stunden zur Arbeit pro Tag Subtyp Arbeitstag ist Wochentag Angebot Montag .. Freitag; - Tage zur Arbeit Work_load: Konstante Array(Arbeitstag) von Arbeitszeit - Implizite Typdeklaration : = (Freitag => 6, Montag => 4, Andere => 10); - Suchtabelle für die Arbeitszeit mit Initialisierung
Typen können Modifikatoren wie z. begrenzt, abstrakt, privat usw. Auf private Typen können nur zugegriffen werden, und nur begrenzte Typen können nur im Bereich des Verpakets geändert oder kopiert werden.[35] ADA 95 fügt weitere Funktionen für die objektorientierte Erweiterung der Typen hinzu.
Kontrollstrukturen
Ada ist a Strukturierte Programmierung Sprache, was bedeutet, dass der Kontrollfluss in Standardaussagen aufgebaut ist. Alle Standardkonstrukte und tiefen frühen Ausstände werden unterstützt, sodass die Verwendung der ebenfalls unterstützten "."gehe zu"Befehle sind selten erforderlich.
- während a nicht gleich B, Schleife. während a /= b Schleife Ada.Text_io.Put_line ("Warten"); Ende Schleife; wenn a > b dann Ada.Text_io.Put_line ("Zustand erfüllt"); anders Ada.Text_io.Put_line ("Zustand nicht erfüllt"); Ende wenn; zum i in 1 .. 10 Schleife Ada.Text_io.Stellen ("Wiederholung: "); Ada.Text_io.Stellen (i); Ada.Text_io.Put_line; Ende Schleife; Schleife a : = a + 1; Ausfahrt Wenn a = 10; Ende Schleife; Fall i ist Wenn 0 => Ada.Text_io.Stellen ("Null"); Wenn 1 => Ada.Text_io.Stellen ("eines"); Wenn 2 => Ada.Text_io.Stellen ("zwei"); - Fallanweisungen müssen alle möglichen Fälle abdecken: Wenn Andere => Ada.Text_io.Stellen ("nichts des oben Genannten"); Ende Fall; zum ein Wochentag in Wochentag'Bereich Schleife - Schleife über eine Aufzählung Put_line ( Wochentag'Bild(ein Wochentag) ); - Ausgangszeichenfolge Darstellung einer Aufzählung wenn ein Wochentag in Arbeitstag dann - Überprüfen Sie einen Subtyp einer Aufzählung Put_line ( " arbeiten für " & Arbeitszeit'Bild (Work_load(ein Wochentag)) ); - Zugriff auf einen Nachschlagtisch Ende wenn; Ende Schleife;
Pakete, Verfahren und Funktionen
Zu den Teilen eines ADA -Programms zählen Pakete, Verfahren und Funktionen.
Beispiel: Paketspezifikation (Beispiel.Ads)
Paket Beispiel ist Typ Nummer ist Angebot 1 .. 11; Verfahren Print_and_increment (j: in aus Nummer); Ende Beispiel;
Paketkörper (Beispiel.ADB)
mit Ada.text_io; Paket Karosserie Beispiel ist i : Nummer : = Nummer'Zuerst; Verfahren Print_and_increment (j: in aus Nummer) ist Funktion Nächste (k: in Nummer) Rückkehr Nummer ist Start Rückkehr k + 1; Ende Nächste; Start Ada.Text_io.Put_line ( "Die Summe ist: " & Nummer'Bild(j) ); j : = Nächste (j); Ende Print_and_increment; - Paketinitialisierung ausgeführt, wenn das Paket ausgearbeitet wird Start während i < Nummer'Letzte Schleife Print_and_increment (i); Ende Schleife; Ende Beispiel;
Dieses Programm kann z. B. mit dem frei verfügbaren Open-Source-Compiler zusammengestellt werden MÜCKEdurch Ausführung
gnatmake -Z Beispiel.Adb
Pakete, Verfahren und Funktionen können in jede Tiefe nisten, und jeder kann auch der logisch äußerste Block sein.
Jedes Paket, jedes Verfahren oder jede Funktion kann eigene Erklärungen von Konstanten, Typen, Variablen und anderen Verfahren, Funktionen und Paketen haben, die in beliebiger Reihenfolge deklariert werden können.
Parallelität
ADA hat Sprachunterstützung für aufgabenbasierte Parallelität. Die grundlegende gleichzeitige Einheit in ADA ist a Aufgabe, das ist ein integrierter begrenzter Typ. Die Aufgaben werden in zwei Teilen angegeben - die Aufgabenerklärung definiert die Aufgabenschnittstelle (ähnlich einer Typdeklaration), die Aufgabenbehörde gibt die Implementierung der Aufgabe an. Abhängig von der Implementierung werden ADA -Aufgaben entweder auf Betriebssystem -Threads oder -prozesse zugeordnet oder von der ADA -Laufzeit intern geplant.
Aufgaben können Einträge für die Synchronisation haben (eine Form von Synchrone Nachricht Passierung). Aufgabeneinträge werden in der Aufgabenspezifikation deklariert. Jeder Aufgabeneintrag kann einen oder mehrere haben annehmen Aussagen innerhalb der Aufgabenkörper. Wenn der Kontrollfluss der Aufgabe eine Akzeptanzanweisung erreicht, wird die Aufgabe blockiert, bis der entsprechende Eintrag von einer anderen Aufgabe aufgerufen wird (ähnlich wird eine aufrufende Aufgabe blockiert, bis die aufgerufene Aufgabe die entsprechende Akzeptanzanweisung erreicht). Aufgabeneinträge können Parameter enthalten, die den Prozeduren ähneln, sodass Aufgaben synchron aus austauschen können. In Verbindung mit auswählen Aussagen Es ist möglich zu definieren Wachen Bei Annahme von Aussagen (ähnlich wie Dijkstra's Schutzbefehle).
ADA bietet auch an geschützte Objekte zum gegenseitiger Ausschluss. Geschützte Objekte sind a Monitor-ähnlich Konstruktion, aber verwenden Sie Wachen anstelle von bedingten Variablen für die Signalübertragung (ähnlich wie bedingte kritische Regionen). Geschützte Objekte kombinieren die Datenkapselung und den sicheren gegenseitigen Ausschluss von Monitoren und Einstiegsschutz aus bedingten kritischen Regionen. Der Hauptvorteil gegenüber klassischen Monitoren besteht darin, dass für die Signalübertragung keine bedingten Variablen erforderlich sind, wodurch potenzielle Deadlocks aufgrund einer falschen Verriegelungssemantik vermieden werden. Wie Aufgaben ist das geschützte Objekt ein integrierter begrenzter Typ und hat auch einen Deklarationsteil und einen Körper.
Ein geschütztes Objekt besteht aus eingekapselten privaten Daten (auf die nur aus dem geschützten Objekt zugegriffen werden kann) und Verfahren, Funktionen und Einträge, die garantiert sich gegenseitig ausschließen (mit der einzigen Ausnahme der Funktionen, die für eine Nebeneffektfreiheit erforderlich sind und kann daher gleichzeitig mit anderen Funktionen laufen). Eine Aufgabe, die ein geschütztes Objekt aufruft, wird blockiert, wenn eine andere Aufgabe derzeit in demselben geschützten Objekt ausgeführt wird, und freigegeben, wenn diese andere Aufgabe das geschützte Objekt verlässt. Blockierte Aufgaben werden auf dem vom Zeitpunkt der Ankunft geordneten geschützten Objekt in der Warteschlange gestellt.
Geschützte Objekteinträge ähneln den Verfahren, haben aber zusätzlich Wachen. Wenn eine Wache auf False bewertet wird, wird eine Anrufaufgabe blockiert und zur Warteschlange dieses Eintrags hinzugefügt. Jetzt kann eine andere Aufgabe in das geschützte Objekt zugelassen werden, da derzeit keine Aufgabe innerhalb des geschützten Objekts ausgeführt wird. Wachen werden neu bewertet, wenn eine Aufgabe das geschützte Objekt verlässt, da dies die einzige Zeit ist, wenn sich die Bewertung von Wachen geändert haben kann.
Anrufe zu Einträgen können sein angefordert zu anderen Einträgen mit der gleichen Signatur. Eine beanspruchte Aufgabe wird blockiert und zur Warteschlange des Zieleintrags hinzugefügt. Dies bedeutet, dass das geschützte Objekt freigegeben wird und die Zulassung einer anderen Aufgabe ermöglicht.
Das auswählen Die Anweisung in ADA kann verwendet werden, um nicht blockierende Eintragsanrufe und akzeptiert, nicht deterministische Auswahl von Einträgen (auch mit Wachen), Auszeiten und Abflüssen.
Das folgende Beispiel zeigt einige Konzepte der gleichzeitigen Programmierung in ADA.
mit Ada.text_io; verwenden Ada.text_io; Verfahren Verkehr ist Typ Airplane_id ist Angebot 1..10; - 10 Flugzeuge Aufgabe Typ Flugzeug (ICH WÜRDE: Airplane_id); - Aufgabe, die Flugzeuge darstellt, mit ID als Initialisierungsparameter Typ Airplane_Access ist Zugang Flugzeug; - Referenztyp auf das Flugzeug geschützt Typ Runway ist - Die gemeinsame Landebahn (geschützt, um einen gleichzeitigen Zugriff zu ermöglichen) Eintrag AIMALE_AirCRAFT (ICH WÜRDE: Airplane_id); - Alle Einträge sind garantiert gegenseitig ausschließlich Eintrag Cleared_runway (ICH WÜRDE: Airplane_id); Eintrag Wait_for_clear; Privatgelände Klar: Boolesche : = WAHR; - Schutz privater Daten - im Allgemeinen mehr als nur eine Flagge ... Ende Runway; Typ Runway_Access ist Zugang alle Runway; - Die Aufgabe der Flugverkehrskontroller enthält Anfragen zum Start und Landung Aufgabe Typ Regler (My_runway: Runway_Access) ist - Aufgabeneinträge für die Synchronnachrichtenübergabe Eintrag Request_Takeoff (ICH WÜRDE: in Airplane_id; Abheben: aus Runway_Access); Eintrag Request_Approach(ICH WÜRDE: in Airplane_id; Sich nähern: aus Runway_Access); Ende Regler; - Zuteilung von Instanzen Runway1 : Alias Runway; - eine Landebahn instanziieren Controller1: Regler (Runway1'Zugang); - und ein Controller, um es zu verwalten ------ Die Implementierungen der oben genannten Typen ------ geschützt Karosserie Runway ist Eintrag AIMALE_AirCRAFT (ICH WÜRDE: Airplane_id) Wenn Klar ist - Die Eingangswache - Die Anrufaufgaben werden blockiert, bis die Bedingung wahr ist Start Klar : = FALSCH; Put_line (Airplane_id'Bild (ICH WÜRDE) & " Auf der Piste "); Ende; Eintrag Cleared_runway (ICH WÜRDE: Airplane_id) Wenn nicht Klar ist Start Klar : = WAHR; Put_line (Airplane_id'Bild (ICH WÜRDE) & "Rundstraße" gelöscht "); Ende; Eintrag Wait_for_clear Wenn Klar ist Start Null; - Hier ist keine Notwendigkeit, etwas zu tun - eine Aufgabe kann nur eingeben, wenn "klar" wahr ist Ende; Ende Runway; Aufgabe Karosserie Regler ist Start Schleife My_runway.Wait_for_clear; - Warten Sie, bis die Landebahn verfügbar ist (Blockierungsanruf) auswählen - Warten Sie auf zwei Arten von Anfragen (je nachdem, was zuerst ausgeführt werden kann) Wenn Request_Approach'zählen = 0 => - Wachanweisung - Akzeptieren Sie nur, wenn auf Request_Approach keine Aufgaben anstehen annehmen Request_Takeoff (ICH WÜRDE: in Airplane_id; Abheben: aus Runway_Access) tun - Beginn des synchronisierten Teils My_runway.AIMALE_AirCRAFT (ICH WÜRDE); - reservieren Sie Runway (potenziell blockieren Sie den Anruf, wenn das geschäftige Objekt oder die Eingabe des Eingangsschutzes falsch ist) Abheben : = My_runway; - Zuweisen Sie den Parameterwert "out", um das Flugzeug zu sagen, welche Landebahn Ende Request_Takeoff; - Ende des synchronisierten Teils oder annehmen Request_Approach (ICH WÜRDE: in Airplane_id; Sich nähern: aus Runway_Access) tun My_runway.AIMALE_AirCRAFT (ICH WÜRDE); Sich nähern : = My_runway; Ende Request_Approach; oder - Kündigen Sie, wenn keine Aufgaben übrig werden, wer anrufen könnte kündigen; Ende auswählen; Ende Schleife; Ende; Aufgabe Karosserie Flugzeug ist Rwy : Runway_Access; Start Controller1.Request_Takeoff (ICH WÜRDE, Rwy); - Dieser Anruf blockiert, bis die Controller-Aufgabe den Akzeptierenblock akzeptiert und vervollständigt Put_line (Airplane_id'Bild (ICH WÜRDE) & " abheben..."); Verzögerung 2.0; Rwy.Cleared_runway (ICH WÜRDE); - Anruf wird nicht als "klar" in rwy blockieren, ist jetzt falsch und keine anderen Aufgaben sollten innerhalb des geschützten Objekts sein Verzögerung 5.0; - Fliegen Sie ein bisschen herum ... Schleife auswählen - Versuchen Sie, eine Landebahn anzufordern Controller1.Request_Approach (ICH WÜRDE, Rwy); - Dies ist ein Blockierungsanruf - wird auf dem Controller ausgeführt, der Block Accept Accept Block erreicht hat Ausfahrt; . oder Verzögerung 3.0; - Timeout - Wenn keine Antwort in 3 Sekunden, tun Sie etwas anderes (alles im folgenden Block) Put_line (Airplane_id'Bild (ICH WÜRDE) & "In Holding -Muster"); - Drucken Sie einfach eine Nachricht aus Ende auswählen; Ende Schleife; Verzögerung 4.0; - Landung Ansatz ... Put_line (Airplane_id'Bild (ICH WÜRDE) & "Laut!"); Rwy.Cleared_runway (ICH WÜRDE); - Benachrichtigen Sie die Runway, die wir hier fertig machen. Ende; NEW_AIRPLANE: Airplane_Access; Start zum I in Airplane_id'Bereich Schleife - Erstellen Sie ein paar Flugzeugaufgaben NEW_AIRPLANE : = Neu Flugzeug (I); - wird direkt nach der Erstellung beginnen Verzögerung 4.0; Ende Schleife; Ende Verkehr;
Pragmas
Ein Pragma ist ein Compiler -Richtlinie Dies vermittelt dem Compiler Informationen, um eine spezifische Manipulation der kompilierten Ausgabe zu ermöglichen.[36] Bestimmte Pragmas sind in die Sprache eingebaut,[37] während andere implementierungsspezifisch sind.
Beispiele für die übliche Verwendung von Compiler Pragmas sind die Deaktivierung bestimmter Funktionen, wie z. Inline -Funktionen).
Generika
Ada hat Generika seit dem ersten entworfenen 1977 bis 1980. Die Standardbibliothek verwendet Generika, um viele Dienste anzubieten. ADA 2005 fügt der Standardbibliothek eine umfassende generische Containerbibliothek hinzu, die von C ++ inspiriert wurde Standard -Vorlagenbibliothek.
A generische Einheit ist ein Paket oder ein Subprogramm, das einen oder mehrere benötigt generische formale Parameter.
A generischer formaler Parameter ist ein Wert, eine Variable, eine Konstante, ein Typ, ein Subprogramm oder sogar eine Instanz einer anderen, benannten, generischen Einheit. Bei generischen formalen Typen unterscheidet die Syntax zwischen diskreten, schwimmenden Punkten, Festpunkt-, Zugriffstypen (Zeiger) usw. Einige formale Parameter können Standardwerte haben.
Zu instanziieren Eine generische Einheit, der Programmierer besteht tatsächlich Parameter für jede formale. Die generische Instanz verhält sich dann wie jede andere Einheit. Es ist möglich, generische Einheiten zu instanziieren Laufzeitzum Beispiel in einer Schleife.Siehe auch
- APSIS - Eine Spezifikation für eine Programmierumgebung zur Unterstützung der Softwareentwicklung in ADA
- Ravenscar -Profil -Eine Teilmenge der ADA-Befragungsfunktionen für sicherheitskritische Hard-Time-Computing
- Spark (Programmiersprache) - Eine Programmiersprache, die aus einer stark eingeschränkten Teilmenge von ADA besteht, die mit Meta -Informationen kommentiert wird, die das gewünschte Komponentenverhalten und die individuellen Laufzeitanforderungen beschreiben
Verweise
- ^ "ADA2012 Begründung" (PDF). Adacore.com. Archiviert (PDF) Aus dem Original am 18. April 2016. Abgerufen 5. Mai 2018.
- ^ "Technischer Corrigendum für ADA 2012 von ISO veröffentlicht". ADA Resource Association. 2016-01-29. Abgerufen 2016-02-23.
- ^ "Consolidated ADA 2012 Sprachreferenzhandbuch". ADA Conformity Assessment Authority. Archiviert von das Original Am 2016-03-03. Abgerufen 2016-02-23.
- ^ Kostenfreier Download: https://www.adacore.com/download)
- ^ "PTC Objectada". Ptc.com. Abgerufen 2014-01-27.
- ^ "Mapusoft ADA-C/C ++ Changer". 16. April 2019.
- ^ "Adamagic mit C -Zwischenzertifikat".
- ^ Ada Begründung, 1986, S. 23, 70, 110–114, 137, 165, 236
- ^ "Chapel Spec (Anerkennung)" (PDF). Cray Inc. 2015-10-01. Abgerufen 2016-01-14.
- ^ "Drago". Archiviert von das Original am 2020-09-14. Abgerufen 2018-08-06.
- ^ "Greif".
- ^ "Sparante".
- ^ Ganssle, Jack (2013-05-29). "ADA Resource Association - Nachrichten und Ressourcen für die ADA -Programmiersprache". Adaic.org. Abgerufen 2013-06-14.
- ^ a b "ISO/IEC 8652: 2012 Informationstechnologie - Programmiersprachen - ADA". Internationale Standardisierungsorganisation. Abgerufen 2012-12-23.
- ^ "Die ADA -Programmiersprache". Universität von Mich. Archiviert von das Original am 2016-05-22. Abgerufen 27. Mai 2016.
- ^ Fuegi, J; Francis, J (2003). "Lovelace & Babbage und die Schaffung der 'Notizen von 1843' '". IEEE Annals of the History of Computing. 25 (4): 16–26. doi:10.1109/mahc.2003.1253887. S2CID 40077111.
- ^ "Parallelität - Kapitel 6 - ADA 95 Qualitäts- und Stilhandbuch". adaic.org. Abgerufen 5. November, 2021.
- ^ Taft, S. Tucker; Olsen, Florence (1999-06-30). "ADA hilft, weniger kugelförmige Code auszubauen". Regierungscomputernachrichten. S. 2–3. Abgerufen 2010-09-14.
- ^ a b c Feldman, Michael. "Wer benutzt Ada?". Arbeitsgruppe Sigada Education.
- ^ Kein sicheres dynamisches Speichermanagement in ADA, In: Schreiben von Linux-Kernel-Modulen in Safe Rost-Geoffrey Thomas & Alex Gaynor, The Linux Foundation, 2019-10-02
- ^ "John Goodenough | Sei Staff Profil". Sei.cmu.edu. Abgerufen 2014-01-27.
- ^ C.A.R., Hoare (1981). "Die alten Kleider des Kaisers" (PDF). Kommunikation der ACM. Verband für Rechenmaschinen. 24 (2): 75–83. doi:10.1145/358549.358561. S2CID 97895.
- ^ Watt, D.A.; Wichmann, B. A.; Findlay, W. (1987). ADA: Sprache und Methodik. Prentice-Hall.
- ^ a b c d Sward, Ricky E. (November 2010). "Der Aufstieg, der Fall und die Beharrlichkeit von Ada". Sigada '10: Verfahren der ACM Sigada Jährlichen Internationalen Konferenz über Sigada. S. 71–74. doi:10.1145/1879063.1879081.
- ^ a b c Rosen, j-p. (August 2009). "Das ADA -Paradox (es)". ADA -Buchstaben. ACM Sigada. 24 (2): 28–35. doi:10.1145/1620593.1620597. S2CID 608405.
- ^ Softech Inc. (1983-04-11). "ADA Compiler Validierungsübersichtsbericht: NYU ADA/ED, Version 19.7 V-001". Waltham, MA. Archiviert von das Original Am 2012-03-12. Abgerufen 2010-12-16.
- ^ Dewar, Robert B. K.; Fisher, Gerald A. Jr.; Schonberg, Edmond; Froelich, Robert; Bryant, Stephen; Goss, Clinton F.; Burke, Michael (November 1980). "Der NYU ADA -Übersetzer und Dolmetscher". ACM Sigplan-Mitteilungen-Verfahren des ACM-Sigplan-Symposiums über die ADA-Programmiersprache. 15 (11): 194–201. doi:10.1145/948632.948659. ISBN 0-89791-030-3. S2CID 10586359.
- ^ a b "ADA Validated Compiler -Liste". ADA Information Clearinghouse. 1. Juli 1992. S. 1–36.
- ^ ADA Information Clearinghouse (1983-04-11). "Das Kongress -ADA -Mandat". Archiviert von das Original am 2016-03-04. Abgerufen 2015-06-07.
- ^ Babiak, Nicholas J. (1989). ADA, die neue DOD -Waffensystem Computersprache - Allheilmittel oder Unglück (PDF). Air University (United States Air Force). S. 39–40. Archiviert (PDF) Aus dem Original am 15. Dezember 2019.
- ^ a b Rehmer, Karl (2009). "Das Hads -Team". In Stellman, Andrew; Greene, Jennifer (Hrsg.). Schöne Teams: Inspirierende und warnende Geschichten von erfahrenen Teamleitern. Sebastopol, Kalifornien: O'Reilly. S. 299–312.
- ^ a b Wolfe, Alexander (Oktober 2004). "Es gibt noch noch ein Leben in Ada". ACM -Warteschlange. 2 (7): 28–31. doi:10.1145/1035594.1035608.
- ^ Adacore. "Gnat Pro für das britische ATC -System in Großbritannien ausgewählt". Archiviert von das Original Am 2010-12-24. Abgerufen 2011-03-01.
- ^ Adacore. "Schau, wer Ada benutzt". Archiviert von das Original Am 2010-12-24. Abgerufen 2011-03-01.
- ^ "ADA -Syntaxkarte" (PDF). Archiviert von das Original (PDF) am 6. Juli 2011. Abgerufen 28. Februar 2011.
- ^ "ADA 83 LRM, SEC 2.8: Pragmas". Archive.adaic.com. Abgerufen 2014-01-27.
- ^ "ADA 83 LRM, Anhang/Anhang B: Vordefinierte Sprache Pragmas". Archive.adaic.com. Archiviert von das Original Am 2012-02-06. Abgerufen 2014-01-27.
Internationale Standards
- ISO/IEC 8652: Informationstechnologie - Programmiersprachen - ADA
- ISO/IEC 15291: Informationstechnologie - Programmiersprachen - ADA -Semantische Schnittstellenspezifikation (ASIS)
- ISO/IEC 18009: Informationstechnologie - Programmiersprachen - ADA: Konformitätsbewertung eines Sprachprozessors (ACATs)
- IEEE Standard 1003.5b-1996, das Posix ADA -Bindung
- ADA -Sprachzuordnungspezifikation, das Corba Schnittstellenbeschreibung Sprache (IDL) zu ADA -Mapping
Begründung
Diese Dokumente wurden in verschiedenen Formen veröffentlicht, einschließlich Druck.
- Ichbiah, Jean D.; Barnes, John G. P.; Firth, Robert J.; Woodger, Mike (1986), Begründung für das Design der ADA -Programmiersprache, archiviert von das Original am 2007-02-02 Auch verfügbar apps.dtic.mil, pdf
- Barnes, John G. P. (1995), ADA 95 Begründung: Die Sprache: Die Standardbibliotheken
- Barnes, John (2006) [2005], Begründung für ADA 2005
Bücher
- Booch, Grady (1987). Software -Engineering mit ADA. Kalifornien: Die Benjamin/Cummings Publishing Company. ISBN 0-8053-0604-8.
- Skansholm, Jan (1996). ADA 95 von Anfang an. Addison-Wesley. ISBN 0-201-40376-5.
- Gilpin, Geoff (1985). ADA: Eine geführte Tour und Tutorial. Prentice Hall. ISBN 978-0-13-004045-9.
- Barnes, John (2006). Programmierung in ADA 2005. Addison-Wesley. ISBN 0-321-34078-7.
- Barnes, John (1991). Programmierung in ADA Plus -Sprachreferenzhandbuch. Addison-Wesley. ISBN 0-201-56539-0.
- Barnes, John (1998). Programmierung in ADA 95. Addison-Wesley. ISBN 0-201-34293-6.
- Barnes, John (1997). Hohe Integrität ADA: Der Funkenansatz. Addison-Wesley. ISBN 0-201-17517-7.
- Barnes, John (2003). Software mit hoher Integrität: Der Funkenansatz für Sicherheit und Sicherheit. Addison-Wesley. ISBN 0-321-13616-0.
- Beidler, John (1997). Datenstrukturen und Algorithmen: Ein objektorientierter Ansatz mit ADA 95. Springer-Verlag. ISBN 0-387-94834-1.
- Gonzalez, Dean W. (1991). Handbuch des Ada -Programmierers. Benjamin-Cummings Publishing Company. ISBN 0-8053-2529-8.
- Ben-Ari, M. (1998). ADA für Software -Ingenieure. John Wiley & Sons. ISBN 0-471-97912-0.
- Cohen, Norman (1996). Ada als zweite Sprache. McGraw-Hill Science/Engineering/Math. ISBN 0-07-011607-5.
- Burns, Alan; Wellings, Andy (2001). Echtzeitsysteme und Programmiersprachen. ADA 95, Echtzeit Java und Echtzeit POSIX. Addison-Wesley. ISBN 0-201-72988-1.
- Burns, Alan; Wellings, Andy (1995). Parallelität in ADA. Cambridge University Press. ISBN 0-521-62911-x.
- Atkinson, Colin (1991). Objektorientierte Wiederverwendung, Parallelität und Verteilung: Ein ADA-basierter Ansatz. Addison-Wesley. ISBN 0-201-56527-7.
- Booch, Grady; Bryan, Doug (1994). Software -Engineering mit ADA. Addison-Wesley. ISBN 0-8053-0608-0.
- Jones, do-the-the-the 1989). ADA in Aktion: Mit praktischen Programmierbeispielen. John Wiley & Sons. ISBN 0-471-60708-8.
- Stubbs, Daniel; Webre, Neil W. (1993). Datenstrukturen mit abstrakten Datentypen und ADA. Brooks Cole. ISBN 0-534-14448-9.
- Ledru, Pascal (Dezember 1998). Verteilte Programmierung in ADA mit geschützten Objekten. Dissertation.com. ISBN 1-58112-034-6.
- Culwin, Fintan (1997). ADA, ein Entwicklungsansatz. Prentice Hall. ISBN 0-13-264680-3.
- Englisch, John; Culwin, Fintan (Januar 1997). ADA 95 Das Handwerk von objektorientiertem Programmieren. Prentice Hall. ISBN 0-13-230350-7.
- Musser, David R.; Stepanov, Alexander (24. Oktober 1989). Die ADA Generic Library: Lineare List -Verarbeitungspakete. Springer-Verlag. ISBN 0-387-97133-5.
- Feldman, Michael B. (1997). Softwarekonstruktion und Datenstrukturen mit ADA 95. Addison-Wesley. ISBN 0-201-88795-9.
- Johnston, Simon (1997). ADA 95 für C- und C ++ - Programmierer. Addison-Wesley. ISBN 0-201-40363-3.
- Feldman, Michael B.; Koffman, Elliot B. (1992–1993). ADA: Problemlösung und Programmdesign. Addison-Wesley. ISBN 0-201-52279-9. 795 Seiten.
- Feldman, Michael B.; Koffman, Elliot B. (1999). ADA 95. Addison-Wesley. ISBN 0-201-36123-x.
- Dale, Nell B.; Weems, Chip; McCormick, John (August 1996). Programmierung und Problemlösung mit ADA 95. Jones & Bartlett Publishers. ISBN 0-7637-0293-5.
- Dale, Nell B.; McCormick, John (2007). ADA Plus-Datenstrukturen: Ein objektorientierter Ansatz, 2. Auflage. Jones & Bartlett Publishers. ISBN 978-0-7637-3794-8.
- Krell, Bruce C. (1992). Entwicklung mit ADA: Lebenszyklusmethoden. Bantam Dell Pub Group. ISBN 0-553-09102-6.
- Bishop, Judy (10. Mai 1990). Verteilte ADA: Entwicklungen und Erfahrungen. Cambridge University Press. ISBN 0-521-39251-9.
- Sander, Bo (1994). Softwaresystemkonstruktion mit Beispielen in ADA. Prentice Hall. ISBN 0-13-030834-x.
- Hillam, Bruce (1994). Einführung in abstrakte Datentypen mit ADA. Prentice Hall. ISBN 0-13-045949-6.
- Rudd, David (1994). Einführung in Softwaredesign und -entwicklung mit ADA. Brooks Cole. ISBN 0-314-02829-3.
- Pyle, Ian C. (1991). Entwicklung von Sicherheitssystemen: Ein Leitfaden mit ADA. Prentice Hall. ISBN 0-13-204298-3.
- Baker, Louis (1989). Künstliche Intelligenz mit ADA. McGraw-Hill. ISBN 0-07-003350-1.
- Burns, Alan; Wellings, Andy (1995). HRT-Hood: Eine strukturierte Designmethode für harte Echtzeit-ADA-Systeme. Nordholland. ISBN 0-444-82164-3.
- Savitch, Walter; Peterson, Charles (1992). ADA: Eine Einführung in die Kunst und Wissenschaft der Programmierung. Benjamin-Cummings Publishing Company. ISBN 0-8053-7070-6.
- Weiss, Mark Allen (1993). Datenstrukturen und Algorithmusanalyse in ADA. Benjamin-Cummings Publishing Company. ISBN 0-8053-9055-3.
- Ledgard, Henry (1983). ADA: Eine Einführung (zweite Ausgabe). Springer-Verlag. ISBN 0-387-90814-5.
- Bjørner, Abendessen; OEST, OLE N., Hrsg. (1980). Auf eine formelle Beschreibung von ADA. London: Springer-Verlag. ISBN 3-540-10283-3.
Archiv
- ADA -Programmiersprache Materialien, 1981–1990. Charles Babbage Institute, Universität von Minnesota. Enthält Literatur zu Softwareprodukten, die für die ADA -Sprache entwickelt wurden. Publikationen der US -Regierung, darunter ADA 9x -Projektberichte, technische Berichte, Arbeitspapiere, Newsletter; und Benutzergruppeninformationen.