|
|
Talking SHEEP
Für das neue Amiga Digital Environment hat der durch AmigaE berühmt gewordene Autor Wouter van Oortmerssen eine entsprechend innovative Skriptsprache entwickelt.
Unter dem vorläufigen Projektnamen SHEEP arbeitet er nun hauptberuflich für Amiga Inc. an einer neuen Ausdrucksform für Programmierer mit Allzweck- Fähigkeiten. Diese soll deutlich mehr erlauben als das bisherige Pendant ARexx. In naher Zukunft soll es zu dem Klebstoff werden, der die Basis für das AmiVerse zusammenhält.
Ähnlich wie ARexx ist SHEEP auf den ersten Blick eine recht normale Interpreter-Sprache, die u.a. zur Interprozess-Kommunikation eingesetzt werden kann. Darüberhinaus kann SHEEP für Datenbankabfragen und die flexible Erstellung und Änderung von Benutzeroberflächen genutzt werden.
Wo liegen nun die Unterschiede?
Zunächst mal ist SHEEP an der Oberfläche zwar imperativ, geht jedoch im Kern von einem funktionalen Ansatz aus.
In der Amiga-World Nummer Vier findet sich folgendes einfache Beispiel:
type tree = branch(left:tree, right:tree) | leaf(data)
Hiermit wird eine einfache Datenstruktur "Baum" erzeugt, deren Äste entweder wieder baumartig sein können, oder als Blätter dann (fixe) Daten oder Datensätze enthalten. In dieser Weise ist es möglich, ganz frei eigene Datentypen zu erstellen, Supertypen zu bilden und sich damit ganz der gegebenen Problemstellung anzupassen.
Damit stellt SHEEP eine Sprache dar, mit welcher sehr schnell Prototypen- Lösungen gefunden werden können. Die Programme werden zu Testzwecken mit einem Interpreter für die Maschine umgesetzt. Mit einer Compiler-Version übersetzt mensch die Schäfchen in Code für den Virtuellen Prozessor. Die Geschwindigkeit übertrifft die Java, ARexx und Basic dabei deutlich und liegt insgesamt in der Größenordnung von C/C++.
Die Hinwendung zum Ansatz objektorientierter Programmierung ist ganz offenkundig und entspricht dem modularen Aufbau des AmigaDE. Die Speicherverwaltung erfolgt ohne die traditionelle "garbage collection" anderer Sprachen für dynamische Objekte. Dafür gibt es aber Schutzmechanismen, so daß nicht versehentlich Inhalte überschrieben werden können, die schon mit Daten belegt sind. Damit wird SHEEP auch für Neueinsteiger beim Programmieren interessant.
Eindrucksvoll war für mich vor allem das Beispiel des Quicksort-Programmes. In Sheep wird daraus ein (allerdings schon recht komplexer) Vierzeiler, der keine Rücksicht mehr nimmt auf den Typ der zu sortierenden Daten. Dies geschieht jedoch nicht aus Nachlässigkeit, sondern ist vielmehr voll beabsichtigt. So können mit dem gleichen Stück Code Textstücke, ganze Zahlen oder völlig beliebige Arten von ordinal vergleichbarer Information sortiert werden.
Ebenfalls neu ist das Vektor-Konzept:
Daten, die sonst in statischen Arrays oder mit dynamischen Listen verwaltet werden, werden hierin abgelegt. Mit einfachen Operationen können dann diese manipuliert werden, z.B. in folgender Weise mit "a" als Vektor:
a = [1,2,3] a = a+[4,5,6]
ergibt dann [1,2,3,4,5,6] als Ergebnisvektor für a. In ähnlicher Weise kann der "+"-Operator zur Aufteilung von Vektoren in ihre Bestandteile genutzt werden.
Modularisierung und integrierte Fehlerroutinen runden die Sprache zu einer Einheit ab, die sich sehen lassen kann.
Ohne die anderen Beispiele hier besprechen zu müssen, kann man insgesamt sagen, daß SHEEP wirklich eine anfängerfreundliche und sehr moderne Alternative zu E darstellt, die viele gute Eigenschaften von Sprachen wie ARexx, Prolog, BASIC, Perl, Python und Java in sich vereint.
Fortgeschrittene Programmierer werden mit SHEEP Ausdrucksmöglichkeiten finden, die es ihnen erlauben, mindestens Projekte bis zu mittlerer Größe darin verwirklichen zu können.
Aufgrund der Einfachheit und enormen Fähigkeiten habe ich den Autor nach Sicherheitsrisiken (Viren, Trojaner, etc.) in Bezug auf SHEEP gefragt. Ähnlich wie bei Javascript-Programmen, die i.d.R. auch keine Dateien auf der Festplatte löschen können, soll es Schutzmechanismen geben, die eine Sperre zwischen dem Code aus Emails oder Webseiten gegenüber der unterliegenden Ebene des OS bilden.
SHEEP befindet sich zur Zeit allerdings noch in einem privaten Beta- Stadium. Deshalb konnte noch kein Erfahrungsbericht von dritter Seite in diese Darstellung integriert werden. Der Erfolg von AmigaE läßt jedoch hoffen, daß sich mit SHEEP noch mehr User und Entwickler für den Amiga begeistern lassen werden.
Link:
http://www.amiga.com/press/zine/11-1-00/sheep
Stefan Czinczoll <sczinczoll@max.uni-duisburg.de>