Programmieren mit Ada

Exposé

Christoph Grein

Schreib an
christ-usch.grein@t-online.de

Überblick

Sie benötigen einen Ada-Kurs für Ihre Mitarbeiter bei Ihnen im Haus?

Diese Kurse verschaffen einen umfassenden Einstieg in die Programmiersprache Ada. Voraussetzung für die Teilnahme am Grundkurs ist Kenntnis einer höheren Programmiersprache; Voraussetzung für die Aufbaukurse Kenntnis von Adas Grundlagen. Moderne Lady Ada
Bild gestaltet von
Christine Anderson
Teilnehmerzahl: maximal 6 Personen
Grundkurs – Voraussetzung: Kenntnis einer höheren Programmiersprache
   Dauer: 1 Woche (Montag Vormittag bis Freitag Vormittag);
                Grundlagen der Sprache Ada
                jeweils 9-12 Uhr und 13-16 Uhr
   Inhalt: Grundlegende Ada-Kenntnisse
               Ada 83, 95, 2005, 2012 (auszugsweise)
Aufbaukurse – Voraussetzung: Sichere Kenntnis der Grundlagen, wie im Grundkurs vermittelt
   Dauer: 1 Woche (Montag Nachmittag bis Freitag Vormittag);
                Fortgeschrittene Konzepte
                jeweils 9-12 Uhr und 13-16 Uhr
   Inhalt: OOP; Nebenläufige Prozesse (Tasking)
               Ada 83, 95, 2005, 2012 (auszugsweise)

English The courses are currently in German only, but if you're interested, I can also provide English versions.
See here the English synopsis.


Ziel der Kurse

Software garantiert immer häufiger direkt die Sicherheit für Menschen und Eigentum. Bekannte Programmiersprachen haben wenige oder keine Sicherheitsmechanismen zu bieten. Dies führt zu Sicherheitslücken, die mit häufigen Aktualisierungen geschlossen werden müssen. Hohe Überarbeitungskosten für den Software-Produzenten sind die Folge und Unannehmlichkeiten für den Kunden.

Ada bietet im Gegensatz zu anderen Programmiersprachen die Mittel, Design- und Programmierfehler frühzeitig zu erkennen oder ganz zu vermeiden. Daher wird Ada in internationalen Sicherheitsstandards als bevorzugte Sprache empfohlen. Sie unterstützt in einzigartiger Weise moderne Analyse-, Design- und Programmiermethoden und damit die Entwicklung großer zuverlässiger Software-Systeme.

In dem sehr lesenswerten Bericht Software Engineering Education: On the Right Track von John W. McCormick (University of Northern Iowa) werden folgende grundlegenden Eigenschaften für den Erfolg der Studenten mit Ada im Gegensatz zu C bei der Entwicklung von Echtzeit-Software für eine Spielzeugeisenbahn genannt:

Die Spielzeugeisenbahn bietet viele sicherheitskritische Echtzeitprobleme, so zum Beispiel Kollisionsvermeidung durch Blockbildung auf der Strecke und Signalisierung, Positionsverfolgung der Züge und Überprüfung ihrer Vollständigkeit (ist der letzte Wagen noch angehängt).

Daher wird der Schwerpunkt des Grundkurses auf den oben genannten Punkten liegen (bis auf den letzten, der in einem Aufbaukurs behandelt wird). Bereits die Kenntnis der Grundlagen von Ada 83 kann die Programmierung deutlich verbessern. Wie verschiedenen Orts untersucht, beruhen allein 80% aller Fehler in C/C++-Programmen auf fehlerhafter Behandlung skalarer Größen.

Einer der Aufbaukurse beschäftigt sich mit objektorientierter Programmierung, wie sie mit Ada 95 eingeführt wurde.

Ein anderer Aufbaukurs behandelt die Programmierung nebenläufiger Prozesse (Tasking), insbesondere das Konzept des Rendezvous zum Datenaustausch.

Zu jedem Sprachmittel gibt es anwendungsbezogene Übungsaufgaben, in denen die Teilnehmer ihr neu erworbenes Wissen festigen können. Sie erhalten je eine Kopie der PowerPoint-Folien in PDF und Kodierungs­beispiele sowie Musterlösungen. Sie haben am Ende eine Vorstellung vom Aufbau und Inhalt des Ada-Referenz­manuals und von der Entwicklung der Sprache seit 1980.


Inhalt der Kurse

Grundlagen

  1. Typkonzept an Hand ganzer Zahlen
    Strenge Typbindung
    Subtypen
    Benannte Zahlen
  2. Zusammengesetzte Typen
    Reihungen und Verbunde
    Aggregate
  3. Kontrollstrukturen
    Schleifen, bedingte Anweisungen, etc.
  4. Unterprogramme
    Prozeduren und Funktionen
    Trennung von Spezifikation und Implementierung
    Parameterübergabe
    Rekursion
  5. Aufzählungen
    Literale sind Funktionen
    Überladung
  6. Pakete
    Kontraktmodell
    Strikte Trennung von Spezifikation und Implementierung
    Kontext-Klauseln und Sichtbarkeit
  7. Ein-/Ausgabe
  8. Vererbungslehre Ada 83
    Überschreiben ererbter Operationen
  9. Schablonen
    Generische Parametertypen
  10. Ausnahmen
  11. Ausarbeitung (Elaboration)
    Elaborationskontrolle
  12. Zeiger
    Zeigervermeidung durch Ada.Containers
    Zeiger und Adressen
    Speicherfreigabe
    Storage Pools
  13. Repräsentationsklauseln
    Little Endian vs. Big Endian
  14. Zum Abschluss des ersten Teils:
    Vertiefende Betrachtung des Zahlenmodells
    Fallen mit Unchecked_Conversion
    Abstrakte Operationen und ihr Wiederauftauchen

Aufbaukurs OOP

  1. Vererbungslehre Ada 83 vs. Ada 95
  2. Abstrakte Typen und Interfaces
    Vielfachvererbung
    Klassenweite Operationen
    Dispatching und Redispatching
    Einfrieren einer Typvereinbarung
  3. Hierarchische Pakete und Sichtbarkeit
  4. Initialisierung und Finalisierung
  5. Iteratoren Ada 83 bis Ada 2012
  6. Repräsentationsklauseln
    Little Endian vs. Big Endian

Zwar werden Repräsentationsklauseln auch schon im Grundkurs behandelt, da sie jedoch in gewöhnlichen Programmen selten benötigt werden, werden sie hier noch einmal behandelt.

Aufbauskurs Nebenläufige Prozesse

  1. Globale Daten vs. Rendezvous
  2. Prozesse
    Selektives Warten
    Zeitbegrenzter Eingangsaufruf
    Bedingter Eingangsaufruf
    Asynchroner Kontrolltransfer
    Requeue
  3. Geschützte Objekte
  4. Eingangsfamilien
  5. Prioritäten
  6. (Restriktionen und Programmprofile
    Ravenscar)
  7. (Vordefinierte Bibiliotheken
    Container)
  8. (Special Needs Annexes)

(Die eingeklammerten Themen werden nur erwähnt.)


English nach Hause
Deutsch
Welcome Homepage

Valid HTML 4.0!