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.
Chapel (Cascade High Productivity Language) ist eine parallele Programmiersprache, die Cray im Rahmen des DARPA-HPCS-Programms entwickelte. Sie ist für produktive Parallelverarbeitung im großen Maßstab gedacht: vom Laptop über Cluster bis zum Supercomputer, inzwischen auch auf GPUs. Nebenläufigkeit und verteilte Speicher sind fest in die Sprache eingebaut, nicht als Bibliotheken nachgerüstet.
Erste Schritte
Der Compiler heißt chpl. Er übersetzt Chapel-Quellcode über ein LLVM- oder C-Backend in ein ausführbares Programm.
chpl hello.chpl -o hello
./hello
chpl --fast hello.chpl -o hello
--fast aktiviert die aggressiven Optimierungen (vergleichbar -O3) und deaktiviert Laufzeit-Checks. chpl --version zeigt die Compiler-Version, chpl --print-commands die ausgeführten Tool-Aufrufe.
Praxis-Tipps
- Multi-Locale: Bei verteilter Ausführung erzeugt chpl zwei Binaries — einen Launcher (
hello) und das eigentliche Programm (hello_real). Der Launcher reicht den Job an den Scheduler (z.B. Slurm) weiter. - Parallel-Konstrukte:
forall(datenparallel),coforall(taskparallel),begin,syncundatomicsind Sprachbestandteile;localeunddomainsteuern die Verteilung. - Mason: Der Paketmanager für Chapel heißt Mason —
mason new,mason build,mason runundmason testbetreuen Projekte. - Umgebung:
CHPL_HOMEzeigt auf die Installation,CHPL_COMMwählt das Kommunikations-Backend (z.B. gasnet oder ofi).
Verwandte Grundlagen: BCPL-Befehle (historische Wurzel der C-Sprachfamilie, auf der das C-Backend aufbaut), Ballerina-Befehle (Nebenläufigkeit ebenfalls im Sprachkern), Go-Befehle (parallele Sprachwelt mit Goroutinen).
Ballerina ist eine quelloffene Programmiersprache (Apache-2.0), die WSO2 für Cloud-Anwendungen und Integration entwickelt. Ihr Markenzeichen: Netzwerk-Interaktionen (HTTP, gRPC, GraphQL, WebSocket, Message Queues, Datenbanken) sind als Sprachelemente eingebaut, nicht als externe Bibliotheken. Das Toolkit kommt als einzelnes Kommandozeilen-Werkzeug bal.
Erste Schritte
Ein einzelnes Programm lässt sich direkt ausführen, ein Projekt wird über bal new angelegt.
bal run hello.bal
bal new mein-projekt
cd mein-projekt
bal build
bal run
bal help listet alle Aktionen des Tools: bal new (Projekt anlegen), bal add (Modul ergänzen), bal build (Paket bauen), bal run (ausführen), bal test (Tests), bal clean (Build-Artefakte entfernen), bal format (Code formatieren) und bal doc (Dokumentation erzeugen).
Praxis-Tipps
- Nebenläufigkeit:
worker-Blöcke und Strände (leichtgewichtige Threads) sind Sprachbestandteile; dascheck-Keyword gibt Fehler früh und lesbar weiter. - Service-Typen: Ein HTTP- oder GraphQL-Service ist im Code ein Objekt mit
resource-Methoden — Ballerina erzeugt daraus direkt lauffähige Endpunkte. - Pakete:
bal packerstellt ein Paket,bal pushveröffentlicht es in Ballerina Central,bal pullholt Abhängigkeiten. - Versionen:
bal versionzeigt die Distribution,bal updateaktualisiert sie.
Verwandte Grundlagen: Chapel-Befehle (Nebenläufigkeit ebenfalls im Sprachkern), GraphQL-Befehle (native GraphQL-Unterstützung), MySQL-Befehle (eingebaute Datenbank-Clients).
BCPL (Basic Combined Programming Language) ist eine typenlose Systemsprache, die Martin Richards 1966/67 während seiner Zeit am MIT (Project MAC) entwarf. Sie stammt von CPL (Combined Programming Language) ab und war ursprünglich zum Schreiben von Compilern gedacht. BCPL gilt als Vorläufer von C: über die Zwischenstufe B (Ken Thompson, 1969) übernahm C die Block-Syntax mit geschweiften Klammern und den //-Zeilenkommentar. Das moderne BCPL-System von Martin Richards läuft weiterhin auf Linux, macOS und Windows.
Erste Schritte
BCPL wird heute über das Cintcode-System (Cintsys) eingesetzt. Der Compiler erzeugt maschinenunabhängigen Cintcode-Zwischencode, der von einem kleinen Interpreter ausgeführt wird. Das macht BCPL extrem portabel.
cintsys64 -q -c bcpl hello TO hello
cintsys64 -q -c c hello TO hello.cin
cintsys64 -q hello
Die TO-Schreibweise stammt aus den frühen BCPL-Kommandozeilen: bcpl <Quelle> TO <Ziel> kompiliert eine Quelldatei. Die Kurzkommandos b, bc, bs, bcb, bsb, bcl und bsl kompilieren BCPL-Programme direkt zu 32-Bit-Cintcode.
Praxis-Tipps
- Typenlos: BCPL kennt nur einen Datentyp — ein maschinenunabhängiges Wort. Vektoren und Strukturen bildet man über Zeigerarithmetik ab.
- Einfluss: Die
{ }-Blockstruktur,//-Kommentare und dasGET-Include (ähnlich#include) gehen auf BCPL zurück. - Kompakt: Der Compiler ist klein und leicht auf neue Rechner portierbar — genau das machte BCPL in den 1970ern so beliebt.
Verwandte Grundlagen: C/C++-Befehle (direkter Nachfahre über B), Chapel-Befehle (moderne Systemsprache mit C-Backend).
ReScript ist eine typsichere Sprache, die zu hochwertigem JavaScript kompiliert wird. Sie entstand aus BuckleScript (Hongbo Zhang, 2016), einem OCaml-Backend, und wurde im Juli 2020 zusammen mit Reason unter dem Namen ReScript neu ausgerichtet. ReScript bietet die Ausdruckskraft von OCaml – Typinferenz, Pattern Matching, unveränderliche Daten – mit einer an JavaScript angelehnten Syntax. Anders als ReasonML, das weiterhin auf der OCaml-Toolchain mit Melange aufbaut, besitzt ReScript einen eigenen Compiler und Build-Prozess.
Werkzeuge
rescript– Build-Tool und Compiler-Aufruf (früherbsb)bsc– der eigentliche ReScript-Compiler (Single-File)rewatch– Datei-Watcher fürrescript build -wrescript convert– migriert OCaml/Reason-Code nach ReScript
Projekt anlegen und bauen
npm init -y
npm install rescript
npx rescript init myapp # Projektgerüst mit rescript.json anlegen
cd myapp
npx rescript build # kompiliert .res/.resi nach JavaScript (lib/js)
npx rescript build -w # Watch-Modus, baut bei Änderungen neu
npx rescript clean # Build-Artefakte (lib, .bs) entfernen
npx rescript format -all # Quellcode formatieren
Konfiguration
Die Projektdatei heißt heute rescript.json (früher bsconfig.json). Wichtige Felder: name, sources, package-specs (z. B. commonjs), jsx für React-ähnliche Syntax.
{
"name": "myapp",
"sources": [{ "dir": "src" }],
"package-specs": [{ "module": "commonjs", "in-source": true }],
"suffix": ".bs.js"
}
ReScript-Quelldateien tragen die Endung .res (Implementierung) und .resi (Signatur). Verwandt: OCaml-Befehle und PureScript-Befehle.