1 / 15
Workshop · Live · 45 Minuten

Ada für Einsteiger

Grundlegende Konzepte der Sprache für kritische Systeme — alr init genügt.

ada-lang.io · learn.adacore.comTeil 1 von 2
Herzlich willkommen. Ada ist die Sprache, die man wählt, wenn Software nicht fehlschlagen darf — Flugzeuge, U-Bahnen, Satelliten. Heute lernt ihr die drei Grundideen, die Ada seit 40 Jahren tragen: strenge Typen, Wertebereiche und Verträge. Ziel: ihr verlasst den Raum mit einem laufenden Programm und versteht, warum Ada so streng ist.
Kernbotschaft

Ada verlagert Korrektheit vom Testen in die Typprüfung — und mit SPARK in den Beweis.

Vorher

Falsche Einheiten, unerlaubte Werte, Grenzverletzungen finden sich im Testbetrieb — oder beim Kunden.

Mit Ada

Der Compiler und die Typsystem-Regeln weisen dieselben Fehler aus — SPARK beweist sie sogar aus.

Strenge ist hier kein Selbstzweck, sondern das Werkzeug: Wer Sicherheitsstufe DAL A erreichen will, braucht genau dieses Sicherheitsnetz.

Kernbotschaft · kommt am Ende wieder02
Der eine Satz zum Mitnehmen: Ada kauft sich Korrektheit mit Strenge. Strenge bedeutet hier: die Sprache hat eine Meinung über korrekte Programme und erzwingt sie beim Bau. Das kostet Schreibgeschwindigkeit oben und zahlt unten aus — besonders wenn Wartung über 30 Jahre und Zertifizierung nach DO-178C anstehen.
Warum überhaupt?

Wo Software nicht fehlschlagen darf, läuft seit Jahrzehnten Ada.

1983

ISO-Standard seit der ersten Generation — Ada 2022 ist die fünfte

DAL A

höchste Sicherheitsstufe der Luftfahrt (DO-178C) — Ada ist dort eine Standardsprache

Im Einsatz: Paris Métro (fahrerlos) · ESA-Satelliten · Eurofighter & F-22-Bordsysteme · Luftverkehrskontrolle

Quellen: ISO/IEC 8652:2023 · DO-178C · ada-lang.io03
Zwei Anker: Ada ist älter als die meisten von euch — und wird bis heute weiterentwickelt, aktuell als Ada 2022. Und: DAL A ist die höchste Zertifizierungsstufe für Flugsoftware. Wer dort arbeitet, arbeitet meist in Ada oder SPARK. Abruf-Frage in die Runde: Wer von euch hat schon Software geschrieben, deren Fehler Menschen gefährden könnten?
01

Drei Grundideen

Starke Typen · Wertebereiche · Pakete

Teil 1 von 2 · ca. 20 Minuten04
Erster Teil: die drei Konzepte, die jede Ada-Codebasis tragen. Syntax lernt sich schnell — diese drei Denkweisen sind der eigentliche Einstieg.
Grundidee 1 · Starke Typen

Jede Einheit ist ein eigener Typ — Mischen wird gar nicht erst kompiliert.

type Meter is new Float;
type Fuss  is new Float;
A : Meter := 100.0;
B : Fuss  := A;     -- Fehler!
  • Eigene Typen sind nicht kompatibel, selbst bei gleichem Basistyp
  • Umrechnung nur explizit: Fuss(A * 3.28)
  • Einheiten-Fehler fallen zur Compilezeit auf
Referenz: Mars Climate Orbiter, 1999 — 125 Mio. $ Verlust durch Meter/Meilen-Mix05
Das ist Adas Antwort auf eine der teuersten Fehlerklassen der Technikgeschichte: der Mars Climate Orbiter ging verloren, weil zwei Teams Meter und Meilen mischten. In Ada wird genau das beim Kompilieren verboten — Meter und Fuss sind verschiedene Typen, und die Sprache besteht auf expliziter Umrechnung.
Grundidee 2 · Ranges

Werte haben gültige Bereiche — der Bereich wird erzwungen.

subtype Stunde is Integer range 0 .. 23;
S : Stunde := 25;  -- Constraint_Error
  • Literale prüft der Compiler, Variablen die Laufzeit
  • Verletzung = definierte Ausnahme, kein stiller Überlauf
  • Der Typ dokumentiert die Fachlogik
25:00 Uhr existiert in Ada nicht — der Typ weiß es06
Der zweite Baustein: Wertebereiche. Ein Subtyp Stunde von 0 bis 23 macht die Fachdomäne Teil des Typsystems. Der schöne Effekt: ungültige Werte können gar nicht erst in Berechnungen einsickern — der Compiler prüft Konstanten, die Laufzeit prüft alles andere und bricht definiert ab, statt Unsinn zu rechnen.
Werkzeug · Alire

Ein Befehl baut und startet — das erste Programm dauert 30 Sekunden.

$ alr init --bin hallo
$ cd hallo && alr run
   Build finished
Hello, world!
  • alr init — Projekt + Struktur
  • alr run / alr build — bauen und starten
  • alr with — Abhängigkeiten aus dem Katalog
Alire: alire.ada.dev · GNAT-Toolchain inklusive07
Hier ist der Moment zum Mitmachen: alr init, alr run, fertig. Alire ist Adas Antwort auf cargo — Paketverwaltung und Build in einem, seit 2020. Der Compiler dahinter ist GNAT, frei verfügbar. Alles, was heute folgt, könnt ihr in genau diesem Projekt ausprobieren.
Grundidee 3 · Pakete

Schnittstelle und Implementierung sind getrennte Dateien — per Sprache erzwungen.

package Konto is
   procedure Einzahlen (Betrag : Cent);
end Konto;

package body Konto is … end Konto;
  • Spec (was) und Body (wie) — immer zwei Dateien
  • with importiert nur die Spec
  • Nestbar: Konto.Spar für Struktur
Header-Dateien, aber vom Compiler geprüft statt kopiert08
Dritte Grundidee: Pakete. Was C mit Header-Dateien improvisiert, macht Ada zur Sprachregel: die Spezifikation deklariert die Schnittstelle, der Body implementiert. Nutzer sehen nur die Spec — Implementierungsdetails sind körperhaft gekapselt. Bei großen Systemen über Jahrzehnte ist genau diese Trennung Gold wert.
02

In der Praxis

Verträge · Nebenläufigkeit · Einordnung

Teil 2 von 2 · ca. 20 Minuten09
Zweiter Teil: Verträge als Tür zu SPARK, Nebenläufigkeit ohne Datenrennen, und die ehrliche Frage, wann Ada die richtige Wahl ist.
Praxis · Verträge

Vor- und Nachbedingungen stehen in der Signatur — und sind prüfbar.

function Wurzel (X : Float) return Float
  with Pre => X >= 0.0,
       Post => Wurzel'Result >= 0.0
  • Pre/Post: Verträge, sichtbar in der Spec
  • Zur Laufzeit prüfbar, in SPARK beweisbar
  • SPARK: beweisbare Teilmenge von Ada
SPARK: beweist Abwesenheit von Laufzeitfehlern — genutzt bis DAL A10
Verträge machen Annahmen zu prüfbaren Fakten: die Wurzelfunktion dokumentiert nicht nur, dass X nichtnegativ sein muss — der Vertrag wird durchgesetzt. Und in SPARK, Adas beweisbarem Kern, kann der Compiler mathematisch nachweisen, dass keine Verletzung je möglich ist. Das ist die Stufe über Rusts Compilezeit-Checks: Beweis statt Prüfung.
Praxis · Nebenläufigigkeit

Tasks und geschützte Objekte machen Datenrennen zur Bauzeit-Unmöglichkeit.

task body Sensor is
begin
   loop Messung.Schreiben (W); end loop;
end Sensor;

protected Messung …  -- exklusiv
  • protected: Zugriff synchronisiert per Konstruktion
  • Tasks kommunizieren über entry-Rendezvous
  • Ravenscar-Profil: deterministisch, echtzeitfest
Nebenläufigkeit ist Sprachkern, keine Bibliothek — seit 198311
Ada hatte Nebenläufigkeit im Sprachkern, bevor die meisten Sprachen das Wort kannten. Geschützte Objekte synchronisieren den Zugriff von selbst — das Datenrennen, das man in C oder Java mit falschen Locks baut, lässt sich hier strukturell gar nicht ausdrücken. Das Ravenscar-Profil ist der zertifizierbare, deterministischeSubset dafür.
Einordnung

Ada wählt man für langlebige kritische Systeme — nicht für den Prototyp.

Anders bleibt, wenn …

TempoPrototyp, Skript, Validierung
ÖkosystemWeb, KI/ML, Data Science
Teamviele Python/JS-Kräfte, hoher Druck
Gleiche Zeilenlogik links und rechts — der Unterschied ist die Bedingung12
Ehrliche Einordnung: Ada ist kein Werkzeug für alles. Der Wert entsteht, wenn Software lange leben muss, fehlerfrei sein muss und das nachweisbar. Für Prototypen, Web-Anwendungen und Datenanalyse bleibt sie die falsche Wahl — und Rust deckt modern viele derselben Garantien bei freierem Stil.
Ehrlich bleiben

Der Einwand: Ada ist Nische — wer soll das lernen?

»Kaum Jobangebote, kleines Ökosystem, altertümliche Syntax — und der Hype gehört eh anderen Sprachen.«

  • Lebendig, nicht tot: Ada 2022 ist aktuell, Alire wächst, Community aktiv
  • Nische zahlt: kritische Systeme laufen nicht weg — wenig Konkurrenz, hohe Preise
  • Transfer: Typdenken und Verträge schärfen jeden Code
Einwand benannt und entkräftet — zwei-seitige Botschaft13
Diesen Einwand bringe ich selbst, und er ist halb wahr: das Ökosystem ist klein, der Hype gehört anderen. Aber die andere Hälfte: die kritische Infrastruktur läuft nicht weg, dort wird Ada seit Jahrzehnten bezahlt und weiterentwickelt. Und selbst wenn ihr nie beruflich Ada schreibt — das Denken in Typen, Bereichen und Verträften macht euch in jeder Sprache besser.
Nach dem Workshop

Zwei Wochen bis zum ersten eigenen nützlichen Programm.

Tag 1–3alr installieren · learn.adacore.com, Kap. 1–5
Woche 1Typen + Ranges üben bis sie sitzen
Woche 2kleines CLI: Einheiten-Konverter mit Verträgen

learn.adacore.com (kostenlos) · ada-lang.io · Übungsidee: Temperatur-/Druck-Konverter mit eigenen Typen

Maßstäbliche Achse: Anfang zählt doppelt14
Konkreter Pfad: Learn Ada von AdaCore ist kostenlos und didaktisch sauber — Kapitel für Kapitel. In Woche eins vor allem Typen und Ranges üben, das ist der eigentliche Umstellungsaufwand. Und ab Woche zwei: ein eigenes kleines Werkzeug. Mein Vorschlag steht auf der Folie — ein Konverter mit eigenen Einheiten-Typen und Verträgen nutzt alles aus heute.
Zum Mitnehmen

Ada verlagert Korrektheit vom Testen in die Typprüfung — und mit SPARK in den Beweis.

Die Frage an euch: Welches System in eurem Umfeld verdient bewiesene Korrektheit?

Heute Abend

alr installieren, alr init, alr run — 30 Sekunden Mutprobe.

Diese Woche

Learn Ada Kap. 1–5 und den ersten eigenen Typ mit Range.

Kernbotschaft — Wiederholung zum Schluss15 / 15
Kernbotschaft noch einmal, wortgleich zu Folie zwei — Verankerung durch Wiederholung. Und die Abschlussfrage in die Runde: welches System verdient bewiesene Korrektheit? Wer eine Antwort hat, hat ein Lernprojekt. Danke — Fragen jetzt oder jederzeit.

Sprechnotiz · Folie 1