Unicon ist eine objektorientierte Erweiterung von Icon, die seit den 1990er-Jahren an der University of Arizona entstand (maßgeblich Clinton Jeffery, später auch Ralph Griswold). Sie erweitert die zielgerichtete Auswertung und das String-Scanning von Icon um Klassen, moderne System-Schnittstellen und Netzwerkfunktionen – ohne die Icon-Programme zu brechen.
Klassen und Methoden
Unicon ergänzt Icon um class-Blöcke mit method-Definitionen und einem initially-Konstruktor. Vererbung und Polymorphismus funktionieren wie in anderen objektorientierten Sprachen.
class Point(x, y)
method print()
write("(", x, ", ", y, ")")
end
initially(x, y)
self.x := x
self.y := y
end
procedure main()
p := Point(1, 2)
p.print()
end
Erweiterte Schnittstellen
- Systemzugriff: POSIX-Prozesse, Pipes und Dateisystem-Operationen
- Netzwerk: Sockets und Protokolle für Client-/Server-Anwendungen
- Grafik: GUI-Programme mit Fenstern und Events
- Datenbanken: SQL-Schnittstellen für gängige Datenbanken
- C-Integration: Einbindung von C-Bibliotheken (Dynamic Loading)
Werkzeuge
Das Kommandozeilenwerkzeug unicon ist ein Wrapper um den Icon-Compiler icont; die Programme laufen in der Icon-Runtime iconx. Damit ist Unicon ein praktischer Einstieg, wenn man die eleganten Icon-Konzepte (Generatoren, String-Scanning) mit moderner objektorientierter Programmierung kombinieren möchte.
Die Wurzeln der Familie reichen bis SNOBOL zurück, der ersten großen String-Sprache aus den Bell Laboratories.