- Operno
-
Operno ist ein objektorientierter und dynamischer Token-Interpreter, welcher von Josef Sniatecki entwickelt wurde. Mit dynamisch ist gemeint, dass viele Aufgaben des Interpreters zur Laufzeit erledigt werden. Die folgenden detaillierten Beschreibungen beziehen sich auf die geplante Version 5.00 von Operno.
Inhaltsverzeichnis
Orientierung
Der Operno-Interpreter legt viel Wert auf die Dynamik und die Lesbarkeit eines Skripts in Operno. Beispielsweise werden Funktionen zur Laufzeit definiert und können später gelöscht und wieder neu definiert werden. Zur Lesbarkeit des Skripts tragen eine leichte Syntax und Synonyme für bestimmte Zeichen bei.
"Hello world!"-Programm
Hier eine Implementierung eines "Hello world!"-Programms in Operno:
out "Hello world!"
Syntax
Die Syntax von Operno ist flexibel und einfach zu lesen. Oftmals können verschiedene Algorithmen in mehreren Formen ausgedrückt werden. Dabei sind die verschiedenen Schreibweisen nach der Verarbeitung des Parsers unterschiedlich. D.h. es werden keine Optimierungen von Operno vorgenommen.
Namensgebung
Die Namensgebung in Operno hat starke Unterschiede zu vielen anderen Skriptsprachen. Namen können Umlaute enthalten und oftmals bietet sich auch die Möglichkeit an, Namen mit Leerzeichen zu definieren.
Beispiele:
mein name = "Timmy" höhe = 100
Zeilenverbindungsmöglichkeiten
Ein großer Vorteil der Syntax von Operno ist, dass sich Zeilen elegant durch bestimmte Operatoren am Ende einer Zeile verbinden lassen. Manuell lassen sich auch Zeilen durch "#" verbinden.
Beispiel:
x = 5 + 2 out x 'Gibt 7 aus. y = 100 # + 3 out y 'Gibt 103 aus.
Definitionen
Objekte lassen sich meist ohne zusätzliche Schlüsselwörter (engl. keywords) definieren. Beispielsweise können Variablen durch die erste Zuweisung eines Wertes definiert werden. Besonders die Definition von Funktionen unterscheidet sich zu vielen anderen Skriptsprachen:
sum(a, b) a + b say hello(name){ out "Hello, " + name + "!" out "This was an example." }
Objekte
Operno ist sehr objektorientiert. Dadurch sind Standardtypen, wie Integer, Float, String usw. als Objekte angelegt. Somit können sich Ruby ähnliche Ausdrücke ergeben:
out "abc":upper case 'Gibt "ABC" aus out 123:negative 'Gibt -123 aus
Gleichzeitig orientiert sich Operno an ein ähnliches System, wie Dateien verarbeitet werden: Ordner-Objekte können mehrere Unterobjekte (auch Kindobjekte (engl. Child-objects)) tragen.
Beispiel:
myself{ name = "John" age = 25 } out myself\name 'Gibt "John" aus. out myself\age 'Gibt 25 aus.
Da Operno als dynamisch gilt, können Objekte jeder Zeit gelöscht und wieder neu definiert werden. Die neue Definition ist nicht von der Vorherigen abhängig.
Beispiel:
x = 5 'Als Integer definiert. del x 'Die Variable existiert nicht mehr. x = "Hello world!" 'Nun als String definiert.
Vorteile und Nachteile
Vorteile
- Operno ist gut lesbar
- Objekte lassen sich zur Laufzeit völlig modifizieren
- Man erreicht schnell Ziele auf der Kalkulations-Basis
- Operno lässt sich als DLL in anderen Projekten einbinden
Nachteile
- Durch die Dynamik fehlt es an Geschwindigkeit
- Funktionen aus anderen Sprachen lassen sich nicht importieren
Quellen
- Dieser Beitrag wurde vom Entwickler des Operno-Interpreters verfasst
Weblinks
- [1] Homepage des Entwickler
Wikimedia Foundation.