Sather ist eine objektorientierte Systemsprache, die ab 1990 am International Computer Science Institute (ICSI) der University of California in Berkeley unter der Leitung von Steve Omohundro entstand. Sie verbindet die Ideen von Eiffel (Design by Contract, starke Typisierung) mit Effizienz-Anspruch und wurde später von der GNU-Projekt-Gemeinschaft weiterentwickelt. Sather ist einfach, effizient, sicher und nicht-proprietär — mit Garbage Collection, Mehrfachvererbung, generischen (parametrisierten) Klassen und Iterator-Abstraktion.

Grundgerüst

class HELLO is
  main is
    #OUT + "Hallo, Welt!
";
  end;
end;

Wichtige Sprachmittel

  • class ... is ... end: Klassen mit Unterklassen über class X < Y (Mehrfachvererbung möglich).
  • ITER: Iterator-Methoden für saubere Schleifen-Abstraktion (z.B. über Sammlungen).
  • bound routines: an ein Objekt gebundene Prozeduren (Methoden).
  • ROUTINE-Typen: Prozeduren als Werte, inkl. Closures.
  • Design by Contract: Vorbedingungen (pre), Nachbedingungen (post) und Invarianten — aus Eiffel übernommen.
  • #OUT: Standard-Ausgabe (Stream), wie in vielen OO-Sprachen der 90er üblich.

Werkzeuge

sacomp                 # GNU-Sather-Compiler (Hauptbefehl)
sacomp -main HELLO -o hello hello.sa   # Programm mit main-Routine übersetzen
sacomp -v               # verbose (Schritte ausgeben)
sacomp -c               # nur kompilieren (kein Linken)
sather -make            # Makefile-basierter Build (ältere Distributionen)
Makefile mit sather.module   # typisches Projekt-Setup

Praxis-Tipps

  • Die aktuelle GNU-Version ist Sather 1.2.3 (2020er-Pakete existieren z.B. für Fedora).
  • Sather unterscheidet Subtyping (Interface-Konformität) von Subclassing (Implementierungs-Wiederverwendung) — flexiblere Hierarchien ohne Typsicherheits-Verlust.
  • Der Quelltext-Datei-Endung ist .sa (z.B. hello.sa).

Verwandte Grundlagen: Eiffel-Befehle, Oberon-Befehle, Modula-3-Befehle und Modula-2-Befehle.