Ada (Programmiersprache)

Ada ist ein strukturierter, statisch getippt, Befehlsform, breites Spektrum und objektorientierte Computerprogrammiersprache auf höchster Ebene, die von Pascal und anderen Sprachen erweitert ist. Es hat starke eingebaute Sprachunterstützung für die ausführliche Parallelität, Aufgaben, gleichzeitiger Nachrichtenübergang (über vorsichtige Aufgabe-Einträge), geschützte Gegenstände (eine einem Monitor ähnliche Konstruktion mit zusätzlichen Wächtern als in bedingten kritischen Gebieten), und Nichtdeterminismus (über ausgesuchte Behauptungen) anbietend.

Ada wurde von einer Mannschaft ursprünglich entworfen, die von Jean Ichbiah von CII Honeywell Stier laut des Vertrags zum USA-Verteidigungsministerium (DoD) von 1977 bis 1983 geführt ist, um die Hunderte von von DoD dann verwendeten Programmiersprachen zu ersetzen. Ada wird stark getippt, und Bearbeiter werden für die Zuverlässigkeit in gegenüber der Mission kritischen Anwendungen wie Avionik-Software gültig gemacht. Ada ist ein internationaler Standard; die jetzige Version (bekannt als Ada 2005) wird durch den ISO/ANSI gemeinsamen Standard definiert, der mit dem Hauptzusatzartikel ISO/IEC 8652:1995/Amd 1:2007 verbunden ist.

Ada wurde nach Ada Lovelace (1815-1852) genannt, wer manchmal als seiend der erste Computerprogrammierer geglaubt wird.

Eigenschaften

Ada wurde an eingebetteten und schritthaltenden Systemen ursprünglich ins Visier genommen. Die Ada 95 Revision, die von S. Tucker Taft von Zwischenmetrik zwischen 1992 und 1995 entworfen ist, hat Unterstützung für Systeme, numerische, finanzielle und objektorientierte Programmierung (OOP) verbessert.

Bemerkenswerte Eigenschaften von Ada schließen ein: Das starke Schreiben, Modularitätsmechanismen (Pakete), Laufzeitüberprüfung, Parallele-Verarbeitung (haben Aufgaben, gleichzeitiger Nachrichtenübergang, Gegenstände und nichtdeterministische ausgesuchte Behauptungen geschützt), das Ausnahme-Berühren und generics. Ada 95 hat Unterstützung für die objektorientierte Programmierung einschließlich der dynamischen Absendung hinzugefügt.

Die Syntax von Ada ist einfach, konsequent, und lesbar. Es minimiert Wahlen von Weisen, grundlegende Operationen durchzuführen, und bevorzugt englische Schlüsselwörter (solcher als "oder" und "und dann") zu Symbolen (solcher als "||" und "&&"). Ada verwendet die grundlegenden mathematischen Symbole (d. h.: "+", "-", "*" und "/") für grundlegende mathematische Operationen, aber vermeidet, andere Symbole zu verwenden. Codeblöcke werden durch Wörter abgegrenzt, die "erklären", und "Ende" "beginnen", wohingegen dem "Ende" (in den meisten Fällen) vom Bezeichner des Blocks gefolgt wird, den es schließt (z.B wenn.. enden Sie, wenn Schleife... Schleife beendet). Im Fall von bedingten Blöcken vermeidet das ein Baumeln sonst, das sich mit dem falschen verschachtelten Wenn-Ausdruck auf anderen Sprachen wie C oder Java paaren konnte.

Ada wird für die Entwicklung von sehr großen Softwaresystemen entworfen. Pakete von Ada können getrennt kompiliert werden. Paket-Spezifizierungen von Ada (die Paket-Schnittstelle) können auch getrennt ohne die Durchführung kompiliert werden, um für die Konsistenz zu überprüfen. Das macht es möglich, Probleme früh während der Designphase zu entdecken, bevor Durchführung anfängt.

Eine Vielzahl von Übersetzungszeit-Kontrollen wird unterstützt, um zu helfen, Programmfehler zu vermeiden, die bis zur Durchlaufzeit auf einigen anderen Sprachen nicht feststellbar sein würden oder verlangen würden, dass ausführliche Kontrollen zum Quellcode hinzugefügt werden. Zum Beispiel verlangt die Syntax, dass das ausführlich genannte Schließen von Blöcken Fehler wegen ungleicher Endjetons verhindert. Die Anhänglichkeit am starken Schreiben erlaubt Entdeckung von vielen allgemeinen Softwarefehlern (falsche Rahmen, Reihe-Übertretungen, ungültige Verweisungen, haben Typen, usw. falsch angepasst), entweder während der Übersetzungszeit, oder sonst während der Durchlaufzeit. Da Parallelität ein Teil der Sprachspezifizierung ist, kann der Bearbeiter in einigen Fällen potenzielle tote Punkte entdecken. Bearbeiter überprüfen auch allgemein für falsch buchstabierte Bezeichner, Sichtbarkeit von Paketen, überflüssigen Behauptungen usw. und können Warnungen und nützliche Vorschläge darauf zur Verfügung stellen, wie man den Fehler befestigt.

Ada unterstützt auch Laufzeitkontrollen, um gegen den Zugang zum unzugeteilten Gedächtnis, den Pufferüberschwemmungsfehlern, den Reihe-Übertretungen, off-one Fehler, Reihe-Zugriffsfehler und andere feststellbare Programmfehler zu schützen. Diese Kontrollen können im Interesse der Laufzeitleistungsfähigkeit arbeitsunfähig sein, aber können häufig effizient kompiliert werden. Es schließt auch Möglichkeiten ein zu helfen, Überprüfung zu programmieren. Aus diesen Gründen wird Ada in kritischen Systemen weit verwendet, wo jede Anomalie zu sehr ernsten Folgen, z.B, Tod durch Unfall, Verletzung oder strengem Finanzverlust führen könnte. Beispiele von Systemen, wo Ada verwendet wird, schließen Avionik, Eisenbahnen, Bankwesen, militärische und Raumtechnologie ein.

Das dynamische Speichermanagement von Ada ist auf höchster Ebene und vor dem Typ sicher. Ada hat allgemein (und vage) "Zeigestöcke" nicht; noch es erklärt jeden Zeigestock-Typ implizit. Statt dessen müssen die ganze dynamische Speicherzuteilung und deallocation durch ausführlich offen erklärte Zugriffstypen stattfinden.

Jeder Zugriffstyp hat eine verbundene Lagerungslache, die die auf niedriger Stufe Details des Speichermanagements behandelt; der Programmierer kann entweder die Verzug-Lagerungslache verwenden oder neue definieren (das ist für den Ungleichförmigen Speicherzugang besonders wichtig). Es ist sogar möglich, mehrere verschiedene Zugriffstypen zu erklären, dass alle denselben Typ benennen, aber verschiedene Lagerungslachen verwenden.

Außerdem sorgt die Sprache für Zugänglichkeitskontrollen sowohl während der Übersetzung als auch in der Durchlaufzeit, die sicherstellt, dass ein Zugriffswert den Typ des Gegenstands nicht überleben kann, zu dem es hinweist.

Obwohl die Semantik der Sprache automatische Müll-Sammlung von unzugänglichen Gegenständen erlaubt, unterstützen die meisten Durchführungen es standardmäßig nicht, weil es unvorhersehbares Verhalten in Realtime Systeme verursachen würde. Ada unterstützt wirklich eine beschränkte Form des Gebiet-basierten Lagerungsmanagements; auch kann der kreative Gebrauch von Lagerungslachen für eine beschränkte Form der automatischen Müll-Sammlung sorgen, seit dem Zerstören einer Lagerungslache zerstört auch alle Gegenstände in der Lache.

Ada wurde entworfen, um den englischen Sprachstandard für Anmerkungen zu verwenden: Die Em-Spur, als eine doppelte Spur (" - "), um Anmerkungstext anzuzeigen. Der Anmerkungshalt am Ende der Linie, also gibt es keine Gefahr von eröffneten Anmerkungen, die zufällig ganze Abteilungen des Quellcodes räumen. Anmerkungen können verschachtelt werden: Vorbefestigen jeder Linie (oder Säule) mit "-" wird ganzen diesen Code auslassen, während es als eine Säule von wiederholten "-" unter die Seite offensichtlich angezeigt wird. Es gibt keine Grenze zum Nisten von Anmerkungen, dadurch vorherigen Code mit kommentierten Abteilungen erlaubend, als noch größere Abteilungen kommentiert zu werden. Allen Unicode Charakteren wird in Anmerkungen, solcher bezüglich symbolischer Formeln (E [0] =m×c ²) erlaubt. Zum Bearbeiter wird die doppelte Spur als Ende der Linie behandelt, das Erlauben hat fortgesetzt, der Sprache als eine Grammatik ohne Zusammenhänge grammatisch zu analysieren.

Der Strichpunkt (";") ist eine Behauptung terminator, und die ungültige oder Behauptung ohne Operationen ist. Einer Single ohne eine Behauptung, um zu enden, wird nicht erlaubt. Das berücksichtigt eine bessere Qualität von Fehlermeldungen.

Der Code für komplizierte Systeme wird normalerweise viele Jahre lang, von Programmierern außer dem ursprünglichen Autor aufrechterhalten. Diese Sprachdesigngrundsätze gelten für die meisten Softwareprojekte und die meisten Phasen der Softwareentwicklung, aber wenn angewandt, auf den Komplex Sicherheit haben kritische Projekte, Vorteile in der Genauigkeit, Zuverlässigkeit und Haltbarkeit vor (zweifelhaften) Kosten in der anfänglichen Entwicklung den Vortritt.

Verschieden von den meisten ISO Standards ist die Sprachdefinition von Ada (bekannt als das Bedienungshandbuch von Ada oder der ARM, oder manchmal das Sprachbedienungshandbuch oder LRM) freier Inhalt. So ist es eine allgemeine Verweisung für Programmierer von Ada und nicht nur Programmierer, die Bearbeiter von Ada durchführen. Abgesondert vom Bedienungshandbuch gibt es auch ein umfassendes Grundprinzip-Dokument, das das Sprachdesign und den Gebrauch von verschiedenen Sprachkonstruktionen erklärt. Dieses Dokument wird auch von Programmierern weit verwendet. Als die Sprache revidiert wurde, wurde ein neues Grundprinzip-Dokument geschrieben.

Ein bemerkenswertes Werkzeug der kostenlosen Software, das von vielen Programmierern von Ada verwendet wird, um ihnen im Schreiben des Quellcodes von Ada zu helfen, ist GPS, das MÜCKE-Programmierstudio.

Geschichte

In den 1970er Jahren wurde das amerikanische Verteidigungsministerium (DoD) durch die Zahl von verschiedenen Programmiersprachen betroffen, die für seine eingebetteten Computersystemprojekte verwenden werden, von denen viele veraltet oder von der Hardware abhängig waren, und von dem keiner sichere Modulprogrammierung unterstützt hat. 1975 wurde eine Arbeitsgruppe, High Order Language Working Group (HOLWG), mit der Absicht gebildet, diese Anzahl zu vermindern, indem sie gefunden hat oder eine für die Voraussetzungen der Abteilung allgemein passende Programmiersprache geschaffen hat. Das Ergebnis war Ada. Die Gesamtzahl von Programmiersprachen auf höchster Ebene im Gebrauch für solche Projekte ist von mehr als 450 1983 bis 37 vor 1996 gefallen.

Die HOLWG Arbeitsgruppe hat die Sprachvoraussetzungen von Steelman, eine Reihe von Dokumenten gefertigt, die die Voraussetzungen festsetzen, die sie gefühlt haben, eine Programmiersprache sollte befriedigen. Viele vorhandene Sprachen wurden formell nachgeprüft, aber die Mannschaft hat 1977 beschlossen, dass keine vorhandene Sprache den Spezifizierungen entsprochen hat.

Bitten um Vorschläge für eine neue Programmiersprache wurden ausgegeben, und vier Auftragnehmer wurden angestellt, um ihre Vorschläge unter den Namen von Rot (Zwischenmetrik zu entwickeln, die von Benjamin Brosgol geführt ist), Green (CII Honeywell Stier, der von Jean Ichbiah geführt ist), Blau (SofTech, der von John Goodenough geführt ist), und (SRI International gelb ist, die von Jay Spitzen geführt ist). Im April 1978, nach der öffentlichen genauen Untersuchung, sind die Roten und Vorschläge von Green zur folgenden Phase gegangen. Im Mai 1979 wurde der Vorschlag von Green, der von Jean Ichbiah an CII Honeywell Stier entworfen ist, gewählt und der Name Ada-danach Augusta Ada, Gräfin von Lovelace gegeben. Dieser Vorschlag war unter Einfluss der Programmiersprache LIS, den Ichbiah und seine Gruppe in den 1970er Jahren entwickelt hatten. Das einleitende Bedienungshandbuch von Ada

wurde in Benachrichtigungen von ACM SIGPLAN im Juni 1979 veröffentlicht. Das Militärische Handbuch des Normativen Verweises wurde am 10. Dezember 1980 (der Geburtstag von Ada Lovelace), und genehmigt

in Anbetracht der Nummer MIL-STD-1815 zu Ehren vom Geburtsjahr von Ada Lovelace. 1981 hat C. A. R. Hoare seine Turing-Preis-Rede ausgenutzt, um Ada dafür zu kritisieren, allzu kompliziert und folglich unzuverlässig zu sein, aber ist nachher geschienen, im Vorwort zu widerrufen, das er für ein Lehrbuch von Ada geschrieben hat.

Ada hat viel Aufmerksamkeit von der Programmiergemeinschaft als Ganzes während seiner frühen Tage angezogen. Seine Unterstützer und andere haben vorausgesagt, dass es eine dominierende Sprache für den allgemeinen Zweck werden könnte zu programmieren und nicht nur Verteidigungszusammenhängende Arbeit. Ichbiah hat öffentlich festgestellt, dass innerhalb von zehn Jahren nur zwei Programmiersprachen, Ada und Lispeln bleiben würden. Frühe Bearbeiter von Ada haben sich angestrengt, die große, komplizierte Sprache durchzuführen, und sowohl Übersetzungszeit als auch Zeitverhalten haben dazu geneigt, langsam zu sein, und primitive Werkzeuge. Bearbeiter-Verkäufer haben die meisten ihrer Anstrengungen im Vorbeigehen das massive, die SprachÜbereinstimmungsprüfung, regierungserforderliches "ACVC" Gültigkeitserklärungsgefolge ausgegeben, das in einer anderen neuartigen Eigenschaft der Sprachanstrengung von Ada erforderlich war.

Die erste gültig gemachte Durchführung von Ada war der NYU Ada/Ed Übersetzer, bescheinigt am 11. April 1983. NYU Ada/Ed wird auf der Satz-Sprache auf höchster Ebene SETL durchgeführt.

1987 hat das US-Verteidigungsministerium begonnen, den Gebrauch von Ada (das Mandat von Ada) für jedes Softwareprojekt zu verlangen, wo neuer Code mehr als 30 % des Ergebnisses war, obwohl Ausnahmen zu dieser Regel häufig gewährt wurden.

Bis zum Ende der 1980er Jahre und Anfang der 1990er Jahre hatten sich Bearbeiter von Ada in der Leistung verbessert, aber es gab noch Barrieren für die volle Ausnutzung der geistigen Anlagen von Ada einschließlich eines stark beanspruchenden Modells, das davon verschieden war, woran die meisten Echtzeitprogrammierer gewöhnt waren.

Das Verteidigungsministerium Mandat von Ada wurde 1997 als DoD effektiv entfernt, hat begonnen, KINDERBETTCHEN (kommerziell Standard-) Technologie zu umarmen. Ähnliche Voraussetzungen haben in anderen NATO-Ländern bestanden.

Wegen der sicherheitskritischen Unterstützungseigenschaften von Ada wird es jetzt nicht nur für militärische Anwendungen, sondern auch in kommerziellen Projekten verwendet, wo ein Softwareprogrammfehler strenge Folgen, z.B Luftfahrt und Flugsicherung, kommerzielle Raketen (z.B Ariane 4 und 5), Satelliten und andere Raumsysteme, Eisenbahntransport und Bankwesen haben kann.

Zum Beispiel wurde die Systemsoftware der Fliege durch die Leitung im Boeing 777 in Ada geschrieben. Das kanadische Automatisierte Luftverkehr-System wurde in 1 Million Linien von Ada (SLOC Zählung) geschrieben. Es hat fortgeschrittene verteilte Verarbeitung, eine verteilte Datenbank von Ada und objektorientiertes Design gezeigt. Ada wird auch in anderen Luftverkehr-Systemen verwendet, z.B Vereinigten Königreichs folgende Generation wird Zukünftige Zwischenbereichskontrollwerkzeug-Unterstützung (iFACTS) Flugsicherungssystem entworfen und hat Verwenden-FUNKEN Ada durchgeführt

Es wird auch im französischen TVM im Taxi Signalsystem auf dem TGV hohes Geschwindigkeitsschiene-System und die U-Bahn Vorstadtzüge in Paris, London, Hongkong und New York City verwendet.

Standardisierung

Die Sprache ist ein ANSI Standard 1983 (ANSI/MIL-STD 1815A) geworden, und ohne weitere Änderungen ist geworden

ein ISO Standard 1987 (ISO-8652:1987). Diese Version der Sprache ist als Ada 83, seit seiner Adoption durch ANSI allgemein bekannt, aber wird manchmal auf auch als Ada 87, seit seiner Adoption durch ISO verwiesen.

Ada 95, der ISO/ANSI gemeinsame Standard (ISO-8652:1995) wurde im Februar 1995 veröffentlicht, Ada 95 die erste ISO objektorientierte Standardprogrammiersprache machend. Um mit der Standardrevision und zukünftigen Annahme zu helfen, hat die US-Luftwaffe die Entwicklung des MÜCKE-Bearbeiters finanziell unterstützt. Jetzt ist der MÜCKE-Bearbeiter ein Teil der GNU-Bearbeiter-Sammlung.

Arbeit hat Besserung und das Aktualisieren des technischen Inhalts der Programmiersprache von Ada fortgesetzt. Eine Technische Berichtigung Ada 95 wurde im Oktober 2001 veröffentlicht, und ein Hauptzusatzartikel, ISO/IEC 8652:1995/Amd 1:2007, die jetzige Version des Standards, wurde am 9. März 2007 veröffentlicht. Die Arbeit am folgenden bedeutenden Zusatzartikel von Ada wird geplant, um vor 2012 vollendet zu werden. (ISO/IEC 8652:201z Ed 3)

Andere zusammenhängende Standards schließen ISO 8651-3:1988 Informationsverarbeitungssysteme — Computergrafik — Sprache von Graphical Kernel System (GKS) bindings — Teil 3 ein: Ada.

Sprachkonstruktionen

Ada ist eine EINEM ALGOL ähnliche Programmiersprache, die Kontrollstrukturen mit vorbestellten Wörtern solcher als ob, dann, sonst, während weil und so weiter zeigt. Jedoch hat Ada auch viele Daten, die Möglichkeiten und andere Abstraktionen strukturieren, die ins ursprüngliche Algol 60, wie Typ-Definitionen, Aufzeichnungen, Zeigestöcke, Enumerationen nicht eingeschlossen wurden. Solche Konstruktionen wurden teilweise geerbt oder von Pascal begeistert.

"Hallo, Welt!" in Ada

Ein allgemeines Beispiel einer Syntax einer Sprache ist das Hallo Weltprogramm: (Ein mehr eingehendes Beispiel kann hier gefunden werden)

(hello.adb)

mit Ada. Text_IO; verwenden Sie Ada. Text_IO;

Verfahren ist Hallo

beginnen Sie

Put_Line ("Hallo, Welt!");

Ende Hallo;

</syntaxhighlight>

Dieses Programm kann z.B durch das Verwenden der frei verfügbaren offenen Quellbearbeiter-MÜCKE, durch die Durchführung kompiliert werden

Datentypen

Das Typ-System von Ada basiert auf einer Reihe vorherbestimmter primitiver Typen nicht, aber erlaubt Benutzern, ihre eigenen Typen zu erklären. Diese Behauptung basiert der Reihe nach auf der inneren Darstellung des Typs, aber auf dem Beschreiben der Absicht nicht, die erreicht werden sollte. Das erlaubt dem Bearbeiter, eine passende Speichergröße für den Typ zu bestimmen, und für Übertretungen der Typ-Definition während der Übersetzung und Durchlaufzeit zu überprüfen (d. h. Reihe-Übertretungen, Puffer, überflutet Typ-Konsistenz, usw.). Ada unterstützt numerische Typen, die durch eine Reihe, modulo Typen, gesamte Typen (Aufzeichnungen und Reihe), und Enumerationstypen definiert sind. Zugriffstypen definieren eine Verweisung auf ein Beispiel eines angegebenen Typs; ungetippte Zeigestöcke werden nicht erlaubt.

Spezielle durch die Sprache zur Verfügung gestellte Typen sind Aufgabe-Typen und geschützte Typen.

Zum Beispiel könnte ein Datum als vertreten werden:

Typ Day_type ist Reihe 1.. 31;

Typ Month_type ist Reihe 1.. 12;

Typ Year_type ist Reihe 1800.. 2100;

Typ Hours ist mod 24;

Typ Weekday ist (am Montag, am Dienstag, am Mittwoch, am Donnerstag, am Freitag, am Samstag, am Sonntag);

Typ Date ist

Aufzeichnung

Tag: Day_type;

Monat: Month_type;

Jahr: Year_type;

Endaufzeichnung;

</syntaxhighlight>

Typen können durch das Erklären von Subtypen raffiniert werden:

Subtyp Working_Hours ist Stunde-Reihe 0.. 12; - höchstens 12 Stunden, um ein Tag zu arbeiten

Subtyp Working_Day ist Werktagsreihe am Montag.. Am Freitag; - Tage, um zu arbeiten

Work_Load: unveränderliche Reihe (Working_Day) von Working_Hours - implizite Typ-Behauptung

: = (am Freitag => 6, am Montag => 4, andere => 10); - Nachschlagetabelle seit Arbeitsstunden mit der Initialisierung

</syntaxhighlight>

Typen können Modifikatoren solcher, wie beschränkt, abstrakt, privat usw. haben. Auf private Typen kann nur zugegriffen werden, und beschränkte Typen können nur modifiziert oder im Rahmen des Pakets kopiert werden, das sie definiert.

Ada 95 fügt zusätzliche Eigenschaften für die objektorientierte Erweiterung von Typen hinzu.

Kontrollstrukturen

Ada ist eine strukturierte Programmiersprache, meinend, dass der Fluss der Kontrolle in Standardbehauptungen strukturiert wird. Alle Standardkonstruktionen und tiefes Niveau früher Ausgang wird so der Gebrauch auch unterstützt unterstützt, 'gehen zu' Befehlen ist selten erforderlich.

während / = b Schleife

Ada. Text_IO.Put_Line ("das Warten");

Endschleife;

wenn a> b dann

Ada. Text_IO.Put_Line ("Bedingung hat sich" getroffen);

sonst

Ada. Text_IO.Put_Line ("Bedingung nicht entsprochen");

Ende wenn;

weil ich in 1.. 10 Schleife

Ada. Text_IO.Put ("Wiederholung:");

Ada. Text_IO.Put (i);

Ada. Text_IO.Put_Line;

Endschleife;

Schleife

a: = + 1;

gehen Sie wenn = 10 ab;

Endschleife;

Fall bin ich

wenn 0 => Ada. Text_IO.Put ("Null");

wenn 1 => Ada. Text_IO.Put ("ein");

wenn 2 => Ada. Text_IO.Put ("zwei");

- Fall-Behauptungen müssen alle möglichen Fälle bedecken:

wenn andere => Ada. Text_IO.Put ("keiner der obengenannten");

Endfall;

für aWeekday in der Schleife von Weekday'Range - Schleife über eine Enumeration

Put_Line (Weekday'Image (AWeekday)); - Produktionsschnur-Darstellung einer Enumeration

wenn AWeekday in Working_Day dann - Kontrolle eines Subtyps einer Enumeration

Put_Line (" um für "& zu arbeiten

Working_Hours'Image (Work_Load (aWeekday))); - Zugang in eine Nachschlagetabelle

Ende wenn;

Endschleife;</syntaxhighlight>

Pakete, Verfahren und Funktionen

Programme von Ada bestehen aus Paketen, Verfahren und Funktionen.

Beispiel:

Paket-Spezifizierung (example.ads)

Paket-Beispiel ist

Typ Number ist Reihe 1.. 11;

Verfahren Print_and_Increment (j: in der Zahl);

Endbeispiel;

</syntaxhighlight>

Paket-Durchführung (example.adb)

mit Ada. Text_IO;

Paket-Körperbeispiel ist

i: Zahl: = Number'First;

Verfahren Print_and_Increment (j: In der Zahl) ist

fungieren Sie Als nächstes (k: In der Zahl) kehren zurück Zahl ist

beginnen Sie

geben Sie k + 1 zurück;

Ende Als nächstes;

beginnen Sie

Ada. Text_IO.Put_Line ('Die Summe ist:' & Number'Image (j));

j: = Folgend (j);

Ende Print_and_Increment;

beginnen Sie

während ich

Pakete, Verfahren und Funktionen können zu jeder Tiefe nisten, und jeder kann auch der logische äußerste Block sein.

Jedes Paket, Verfahren oder Funktion können seine eigenen Behauptungen von Konstanten, Typen, Variablen, und anderen Verfahren, Funktionen und Paketen haben, die in jeder Ordnung erklärt werden können.

Parallelität

Ada hat Sprachunterstützung für die Aufgabe-basierte Parallelität. Die grundsätzliche gleichzeitige Einheit in Ada ist eine Aufgabe, die ein eingebauter beschränkter Typ ist. Aufgaben werden in zwei Teilen angegeben - die Aufgabe-Behauptung definiert die Aufgabe-Schnittstelle (ähnlich einer Typ-Behauptung), der Aufgabe-Körper gibt die Durchführung der Aufgabe an.

Abhängig von der Durchführung werden Aufgaben von Ada entweder zu Betriebssystemaufgaben oder Prozessen kartografisch dargestellt, oder stehen innerlich durch die Durchlaufzeit von Ada auf dem Plan.

Aufgaben können Einträge für die Synchronisation (eine Form des gleichzeitigen Nachrichtenübergangs) haben. Aufgabe-Einträge werden in der Aufgabe-Spezifizierung erklärt. Jeder Aufgabe-Zugang kann ein haben, oder mehr akzeptiert Behauptungen innerhalb des Aufgabe-Körpers. Wenn der Kontrollfluss der Aufgabe eine akzeptieren Behauptung erreicht, wird die Aufgabe blockiert, bis der entsprechende Zugang durch eine andere Aufgabe genannt wird (ähnlich, wird eine Benennen-Aufgabe blockiert, bis die genannte Aufgabe reicht, das Entsprechen akzeptieren Behauptung). Aufgabe-Einträge können Verfahren ähnliche Rahmen haben, Aufgaben erlaubend, Daten gleichzeitig auszutauschen. In Verbindung mit ausgesuchten Behauptungen ist es möglich, Wächter darauf zu definieren, akzeptieren Behauptungen (ähnlich den vorsichtigen Befehlen von Dijkstra).

Ada bietet auch geschützte Gegenstände für den gegenseitigen Ausschluss an. Geschützte Gegenstände sind eine einem Monitor ähnliche Konstruktion, aber verwenden Wächter statt bedingter Variablen, um (ähnlich bedingten kritischen Gebieten) zu signalisieren. Geschützte Gegenstände verbinden die Daten encapsulation und den sicheren gegenseitigen Ausschluss von Monitoren und die Zugang-Wächter von bedingten kritischen Gebieten. Der Hauptvorteil gegenüber klassischen Monitoren besteht darin, dass bedingte Variablen für die Nachrichtenübermittlung nicht erforderlich sind, vermeidend, dass sich Potenzial wegen der falschen sich schließen lassenden Semantik festfährt. Wie Aufgaben ist der geschützte Gegenstand ein eingebauter beschränkter Typ, und er hat auch einen Behauptungsteil und einen Körper.

Ein geschützter Gegenstand besteht aus zusammengefassten privaten Daten (auf den nur aus dem geschützten Gegenstand zugegriffen werden kann), und Verfahren, Funktionen und Einträge, die, wie man versichert, gegenseitig exklusiv sind (mit der einzigen Ausnahme von Funktionen, die erforderlich sind, Nebenwirkung frei zu sein, und deshalb gleichzeitig mit anderen Funktionen laufen können). Eine Aufgabe, die einen geschützten Gegenstand nennt, wird blockiert, wenn eine andere Aufgabe zurzeit innerhalb desselben geschützten Gegenstands, und veröffentlicht durchführt, wenn diese andere Aufgabe den geschützten Gegenstand verlässt. Blockierte Aufgaben werden auf dem geschützten durch die Zeit der Ankunft bestellten Gegenstand Schlange gestanden.

Geschützte Gegenstand-Einträge sind Verfahren ähnlich, aber haben zusätzlich Wächter. Wenn ein Wächter zum falschen bewertet, wird eine Benennen-Aufgabe blockiert und zur Warteschlange dieses Zugangs hinzugefügt; jetzt kann eine andere Aufgabe auf den geschützten Gegenstand zugelassen werden, weil keine Aufgabe zurzeit innerhalb des geschützten Gegenstands durchführt. Wächter werden wiederbewertet, wann auch immer eine Aufgabe den geschützten Gegenstand verlässt, weil das die einzige Zeit ist, als sich die Einschätzung von Wächtern geändert haben kann.

Anrufe zu Einträgen können zu anderen Einträgen mit derselben Unterschrift Schlange wiedergestanden werden. Eine Aufgabe, die Schlange wiedergestanden wird, wird blockiert und zur Warteschlange des Zielzugangs hinzugefügt; das bedeutet, dass der geschützte Gegenstand veröffentlicht wird und Aufnahme einer anderen Aufgabe erlaubt.

Die ausgesuchte Behauptung in Ada kann verwendet werden, um blockierungsfreie Zugang-Anrufe durchzuführen, und, akzeptiert nichtdeterministische Auswahl an Einträgen (auch mit Wächtern), Pausen und Abbrüche.

Das folgende Beispiel illustriert einige Konzepte der gleichzeitigen Programmierung in Ada.

mit Ada. Text_IO; verwenden Sie Ada. Text_IO;

Verfahren Verkehr ist

Typ Airplane_ID ist Reihe 1.. 10; - 10 Flugzeuge (= Aufgaben)

Aufgabe-Typ Airplane (Personalausweis: Airplane_ID); - Aufgabe-Typ-Darstellen-Flugzeuge

Typ Airplane_Access ist Zugriffsflugzeug; - Zugriffstyp (Verweisung) auf das Flugzeug

geschützter Typ Runway ist - ein geschützter Gegenstand - die geteilte Startbahn

Zugang Assign_Aircraft (Personalausweis: Airplane_ID);

Zugang Cleared_Runway (Personalausweis: Airplane_ID);

Zugang Wait_For_Clear;

privater

Klar: Boolean: = Wahr; - geschützte private Daten - allgemein mehr als gerade eine Fahne...

Endstartbahn;

Typ Runway_Access ist Zugang die ganze Startbahn;

- der Luftverkehr-Kontrolleur nimmt Bitten um das Take-Off und landend

Aufgabe-Typ Controller (My_Runway: Runway_Access) ist

Zugang Request_Takeoff (Personalausweis: in Airplane_ID; Take-Off: Runway_Access);

Zugang Request_Approach (Personalausweis: in Airplane_ID; nähern Sie Sich: Runway_Access);

Endkontrolleur;

Runway1: Aliased-Startbahn; - realisieren eine Startbahn

Controller1: Kontrolleur (Runway1'Access); - und ein Kontrolleur, um es zu führen

------die Durchführungen der obengenannten Typen------

geschützte Körperstartbahn ist

Zugang Assign_Aircraft (Personalausweis: Airplane_ID)

wenn Klar, ist - der Zugang-Wächter - Aufgaben werden blockiert, bis das wahrer ist

beginnen Sie

Klar: = Falsch; Put_Line (Airplane_ID'Image (Personalausweis) & "auf der Startbahn");

Ende;

Zugang Cleared_Runway (Personalausweis: Airplane_ID) wenn nicht Klar ist

beginnen Sie

Klar: = Wahr; Put_Line (Airplane_ID'Image (Personalausweis) & "geklärte Startbahn");

Ende;

Zugang, der Wait_For_Clear, wenn Klar, ist, beginnt

ungültig;

Ende; Endstartbahn;

Aufgabe-Körperkontrolleur ist

beginnen Sie

Schleife

My_Runway. Wait_For_Clear; - warten, bis Startbahn verfügbarer ist

wählen Sie aus - warten auf zwei Typen von Bitten

wenn Request_Approach'count = 0 => - Landungen Vorrang haben

akzeptieren Sie Request_Takeoff (Personalausweis: in Airplane_ID; Take-Off: Runway_Access) tun

My_Runway. Assign_Aircraft (Personalausweis); - bestellen Startbahn vor

Take-Off: = My_Runway; - erzählen Flugzeug der Startbahn

Ende Request_Takeoff; - Ende des synchronisierten Teils

oder

akzeptieren Sie Request_Approach (Personalausweis: in Airplane_ID; nähern Sie Sich: Runway_Access) tun

My_Runway. Assign_Aircraft (Personalausweis);

Annäherung: = My_Runway;

Ende Request_Approach;

oder - enden, wenn niemand abgereist ist, wer nennen konnte

begrenzt;

ausgesuchtes Ende;

Endschleife;

Ende;

Aufgabe-Körperflugzeug ist

Rwy: Runway_Access;

beginnen Sie

Controller1. Request_Takeoff (Personalausweis, Rwy); - warten, um für das Take-Off geklärt zu werden

Put_Line (Airplane_ID'Image (Personalausweis) &, "sich..." entfernend); Verzögerung 2.0;

Rwy. Cleared_Runway (Personalausweis);

Verzögerung 5.0; - fliegen ringsherum ein bisschen...

Schleife

wählen Sie aus - versuchen, um eine Startbahn zu bitten

Controller1. Request_Approach (Personalausweis, Rwy); - das ist ein blockierender Anruf

Ausgang; - wenn Anruf zurückgekehrt ist, sind wir klar, um zu landen - gehen weiter...

oder Verzögerung 3.0; - Pause - wenn keine Antwort in 3 Sekunden, tun Sie etwas anderes

Put_Line (Airplane_ID'Image (Personalausweis) & "im haltenden Muster");

ausgesuchtes Ende; Endschleife;

Verzögerung 4.0; - tun Landungsannäherung...

Put_Line (hat Airplane_ID'Image (Personalausweis) & "aufgesetzt!");

Rwy. Cleared_Runway (Personalausweis); - geben Startbahn bekannt, dass wir hier getan werden.

Ende;

New_Airplane: Airplane_Access;

beginnen Sie

weil ich in der Airplane_ID'Range Schleife - einige Flugzeug-Aufgaben schaffe

New_Airplane: = neues Flugzeug (I); Verzögerung 3.0;

Endschleife;

Endverkehr;

</syntaxhighlight>

Pragmas

Ein pragma ist eine Bearbeiter-Direktive, die Information zum Bearbeiter befördert, um spezifische Manipulation der kompilierten Produktion zu erlauben. Bestimmte pragmas werden in in die Sprache gebaut, während anderer mit der Durchführung spezifisch sind.

Beispiele des allgemeinen Gebrauchs des Bearbeiters pragmas würden bestimmte Eigenschaften, wie Laufzeitdatentypprüfung oder Reihe-Subschrift-Grenzüberprüfung unbrauchbar machen sollen, oder den Bearbeiter zu beauftragen, Gegenstand-Code anstatt eines Funktionsanrufs einzufügen (wie C/C ++ mit Reihenfunktionen tut).

Siehe auch

  • APSIS - eine Spezifizierung für eine Programmierumgebung, um Softwareentwicklung in Ada zu unterstützen
  • Liste von Programmiersprachen
  • SPRÜHEN SIE (Programmiersprache) - eine Programmiersprache FUNKEN, die aus einer hoch eingeschränkten Teilmenge der Adas besteht, die mit der meta Information kommentiert ist, die gewünschtes Teilverhalten und individuelle Laufzeitvoraussetzungen beschreibt
  • VHDL - eine Hardware-Beschreibungssprache hat sich ursprünglich auf das Geheiß des US-amerikanischen Verteidigungsministeriums entwickelt, das schwer von Ada in beiden Konzepten und Syntax borgt
  • PL/SQL
  • FREUNDLICH - eine frühere US-amerikanische Militärische Programmiersprache
  • Profil von Ravenscar
  • Vergleich von Programmiersprachen
  • Strohmann-Vorschlag

Referenzen

Internationale Standards

  • ISO/IEC 8652: Informationstechnologieprogrammierung languages-Ada
  • ISO/IEC 15291: Informationstechnologieprogrammierung languages-Ada Semantic Interface Specification
  • ISO/IEC 18009: Informationstechnologieprogrammierung languages-Ada: Anpassungsbewertung eines Sprachverarbeiters
  • IEEE Standard 1003.5b-1996, die POSIX Ada, die bindet
  • Ada Language Mapping Specification, der CORBA IDL Ada, die kartografisch darstellt

Grundprinzip

(Diese Dokumente sind in verschiedenen Formen einschließlich des Drucks veröffentlicht worden.)

Bücher

  • Grady Booch: Softwaretechnik mit Ada, Kalifornien: Benjamin/Cummings Publishing Company, Inc., 1987. Internationale Standardbuchnummer 0-8053-0604-8
  • Jan Skansholm: Ada 95 Vom Anfang, Addison-Wesley, internationale Standardbuchnummer 0-201-40376-5
  • Geoff Gilpin: Ada: Eine Führung und Tutorenkurs, Saal von Prentice, internationale Standardbuchnummer 978-0-13-004045-9
  • John Barnes: In Ada 2005, Addison-Wesley, internationale Standardbuchnummer 0-321-34078-7 programmierend
  • John Barnes: In Ada plus das Sprachbedienungshandbuch, Addison-Wesley, internationale Standardbuchnummer 0-201-56539-0 programmierend
  • John Barnes: In Ada 95, Addison-Wesley, internationale Standardbuchnummer 0-201-34293-6 programmierend
  • John Barnes: Hohe Integrität Ada: Die FUNKEN-Annäherung, Addison-Wesley, internationale Standardbuchnummer 0-201-17517-7
  • John Barnes: Hohe Integritätssoftware: Die FUNKEN-Annäherung an die Sicherheit und Sicherheit, Addison-Wesley, internationale Standardbuchnummer 0-321-13616-0
  • John Beidler: Datenstrukturen und Algorithmen: Eine Objektorientierte Annäherung mit Ada 95, Springer-Verlag, internationale Standardbuchnummer 0-387-94834-1
  • Dean W. Gonzalez: Das Handbuch von Ada Programmer, Benjamin Cummings Publishing Company, internationale Standardbuchnummer 0-8053-2529-8
  • M. Ben-Ari: Ada für Softwareingenieure, John Wiley & Sons, internationale Standardbuchnummer 0-471-97912-0
  • Norman Cohen: Ada als eine Zweite Sprache, McGraw-Hügel-Wissenschaft/Technik/Mathematik, internationale Standardbuchnummer 0-07-011607-5
  • Alan Burns, Andy Wellings: Echtzeitsysteme und Programmiersprachen. Ada 95, das Schritthaltende Java und Schritthaltender POSIX. Addison-Wesley, internationale Standardbuchnummer 0-201-72988-1
  • Alan Burns, Andy Wellings: Parallelität in Ada, Universität von Cambridge Presse, internationale Standardbuchnummer 0 521 62911 X
  • Colin Atkinson: Objektorientierter Wiedergebrauch, Parallelität und Vertrieb: Eine Mit Sitz in Ada Annäherung, Addison-Wesley, internationale Standardbuchnummer 0-201-56527-7
  • Grady Booch, Doug Bryan: Softwaretechnik mit Ada, Addison-Wesley, internationale Standardbuchnummer 0-8053-0608-0
  • Daniel Stubbs, Neil W. Webre: Datenstrukturen mit Abstrakten Datentypen und Ada, Brooks Cole, internationaler Standardbuchnummer 0-534-14448-9
  • Pascal Ledru: Verteilte Programmierung in Ada mit Geschützten Gegenständen, Dissertation.com, internationale Standardbuchnummer 1-58112-034-6
  • Fintan Culwin: Ada, eine Entwicklungsannäherung, Prentice Hall, internationale Standardbuchnummer 0-13-264680-3
  • John English, Fintan Culwin: Ada 95 das Handwerk des Gegenstands Orientierte Programmierung, Prentice Hall, internationale Standardbuchnummer 0-13-230350-7
  • David A. Wheeler: Ada 95, Springer-Verlag, internationale Standardbuchnummer 0-387-94801-5
  • David R. Musser, Alexander Stepanov: Die Bibliothek von Ada Generic: Geradlinige Listenverarbeitungspakete, Springer-Verlag, internationale Standardbuchnummer 0-387-97133-5
  • Michael B. Feldman: Softwareaufbau und Datenstrukturen mit Ada 95, Addison-Wesley, internationale Standardbuchnummer 0-201-88795-9
  • Simon Johnston: Ada 95 für C und C ++ Programmierer, Addison-Wesley, internationale Standardbuchnummer 0-201-40363-3
  • Michael B. Feldman, Elliot B. Koffman: Ada 95, Addison-Wesley, internationale Standardbuchnummer 0 201 36123 X
  • Nell Dale, Chip Weems, John McCormick: Programmierend und das Problem-Lösen mit Ada 95, Jones & Bartlett Publishers, internationale Standardbuchnummer 0-7637-0293-5
  • Nell Dale, John McCormick: Ada Plus Datenstrukturen: Eine Objektorientierte Annäherung, 2. Ausgabe, Jones & Bartlett Publishers, internationale Standardbuchnummer 0-7637-3794-1
  • Bruce C. Krell: Das Entwickeln Mit Ada: Lebenszyklus-Methoden, Bantam Dell Pub Group, internationale Standardbuchnummer 0-553-09102-6
  • Judy Bishop: Verteilte Ada: Entwicklungen und Erfahrungen, Universität von Cambridge Presse, internationale Standardbuchnummer 0-521-39251-9
  • Filiale Sanden: Softwaresystemaufbau Mit Beispielen in Ada, Prentice Hall, internationaler Standardbuchnummer 0 13 030834 X
  • Bruce Hillam: Einführung in Abstrakte Datentypen mit Ada, Prentice Hall, internationaler Standardbuchnummer 0-13-045949-6
  • David Rudd: Einführung ins Softwaredesign und die Entwicklung Mit Ada, Brooks Cole, internationaler Standardbuchnummer 0-314-02829-3
  • Ian C. Pyle: Das Entwickeln von Sicherheitssystemen: Ein Führer, der Ada, Prentice Hall, internationale Standardbuchnummer 0-13-204298-3 Verwendet
  • Louis Baker: Künstliche Intelligenz Mit Ada, McGraw-Hügel, internationaler Standardbuchnummer 0-07-003350-1
  • Alan Burns, Andy Wellings: HRT-MOTORHAUBE: Eine Strukturierte Designmethode für Harte Schritthaltende Ada Systems, Nordholland, internationale Standardbuchnummer 0-444-82164-3
  • Walter Savitch, Charles Peterson: Ada: Eine Einführung in die Kunst und Wissenschaft der Programmierung, Benjamin Cummings Publishing Company, internationale Standardbuchnummer 0-8053-7070-6
  • Mark Allen Weiss: Datenstrukturen und Algorithmus-Analyse in Ada, Benjamin Cummings Publishing Company, internationale Standardbuchnummer 0-8053-9055-3
  • Henry Ledgard: ADA: EINE EINFÜHRUNG (die Zweite Ausgabe), Springer-Verlag, internationale Standardbuchnummer 0-387-90814-5
  • Speist Bjørner; Ole N. Oest (Hrsg.).: Zu einer Formellen Beschreibung von Ada, London: Springer-Verlag, 1980. Internationale Standardbuchnummer 3-540-10283-3

Archive

Außenverbindungen


Amerikaner (Wort) / Alfonso Arau
Impressum & Datenschutz