Oz ist eine multiparadigmatische Programmiersprache, die im Programming Systems Lab der Université catholique de Louvain und der Universität des Saarlandes für die Programmierausbildung entwickelt wurde. Das kanonische Lehrbuch „Concepts, Techniques, and Models of Computer Programming“ (Peter van Roy, Seif Haridi) baut vollständig auf Oz auf. Die Implementierung heißt Mozart (Mozart 2 als aktuelle Version).
Kernkonzepte
Oz vereint funktionale, logische, constraintbasierte, objektorientierte und nebenläufige Programmierung in einer einzigen Sprache. Zentrale Idee sind Datenfluss-Variablen: Eine Variable ist zunächst ungebunden und wird erst durch eine Zuweisung (X = 42) determiniert — lesende Operationen warten automatisch, bis der Wert verfügbar ist. Auf dieser Basis entstehen nebenläufige Programme ohne explizite Locks. Ein weiteres Alleinstellungsmerkmal sind Ports als leichtgewichtiges Actor-Modell, konzeptionell verwandt mit Erlangs Message-Passing-Prozessen.
Der Compiler: ozc
ozc -c Foo.oz # kompiliert Foo.oz zu Foo.ozf (gepickelter Code)
ozc -x Foo.oz # kompiliert und erzeugt ausführbare Datei (Unix: Foo, Windows: Foo.exe)
ozengine Foo.ozf # führt eine .ozf-Datei aus
ozemulator # startet den grafischen Oz-Emulator
ozwish # Tcl/Tk-Shell für Oz
{Browse 'Hallo Welt'} # Ausgabe im Oz-Browser (Emulator)
Syntax-Highlights
local X in
X = 42
{Browse X}
end
fun {Fakultaet N}
if N =< 0 then 1 else N * {Fakultaet N-1} end
end
Constraints und Suche
Oz enthält eine ausgereifte Constraint-Programmierung über endliche Domänen (FD). Variablen erhalten eine Domäne, Constraints schränken sie ein, und die eingebaute Suche findet Lösungen:
declare
proc {VierFarben Problem}
%% Variablen mit FD.int-Domäne deklarieren
in
{FD.distribute ff Problem}
end
{Search.base.all VierFarben}
Die Prozeduren Choice und fail steuern die Suchverzweigung, Search sammelt Lösungen. In der OPI (Emacs-Schnittstelle) wird Code mit oz-compile-command (Standard: ozc -c %s) kompiliert.
Praxis-Tipps
- Im interaktiven Modus brauchen Definitionen ein
declarevor der ersten Verwendung. - Aus
.ozf-Dateien lassen sich mitozc -xplattformunabhängig ausführbare Programme erzeugen. - Für Lernzwecke ist die Kombination aus Emacs-OPI und
{Browse}am schnellsten — der Browser zeigt Werte und Datenfluss direkt an.
Verwandte Grundlagen: Euler-Befehle, PL/0-Befehle, Simula-Befehle, Scheme-Befehle, Wyvern-Befehle, Opa-Befehle.