Programmieren in Englisch statt C++

Mit der Revolution-Plattform in Version 4 präsentiert Runtime Revolution eine Entwicklungsumgebung mit eingängiger Programmiersprache für Web und Desktop.

Artikel erschienen in Swiss IT Magazine 2009/11

     

Programmiersprachen sind im allgemeinen schwer lesbar – Sprachen wie C++ oder Java warten mit Konstrukten wie for (Iterator<TimerTask> i = c.iterator(); i.hasNext();) auf, die den Zugang sowohl für Anfänger als auch für jemanden, der den Code nicht selbst geschrieben hatte, nicht gerade leicht machen und kaum als selbstdokumentierend bezeichnet werden können. Mit Hypercard hat Apple Ende der 1980er Jahre eine Authoring- und Entwicklungsumgebung auf den Markt gebracht, deren Scriptsprache Hypertalk sich wie gewöhnliches Englisch liest. Hypercard eignete sich aber nur bedingt für die allgemeine Softwareentwicklung: Der Code wird nicht kompiliert, sondern interpretiert, was die Leistungsfähigkeit mindert. Und Hypercard lief nur auf dem Mac.



Cross-Plattform und Plain English

Hypercard gibt es zwar nicht mehr, aber die Idee des «User-Centric Development» hat bereits 1997 eine neue Heimat gefunden: Die schottische Firma Runtime Revolution nahm das Konzept auf und entwickelte es seither kontinuierlich weiter. Das Ergebnis ist eine Entwicklungsplattform mit einer an Hypertalk angelehnten Scriptsprache, einem interaktiven Editor und einer Runtime-Engine, mit der sich Anwendungen plattformübergreifend entwickeln und betreiben lassen: Sowohl die Entwicklungsumgebung als auch die Runtime-Engine laufen unter Windows, Mac OS X und Linux – und zwar im nativen Look der jeweiligen Plattform. Eine Revolution-Anwendung, die auf einem Mac erstellt wurde, präsentiert sich unter Windows wie eine echte Windows-Applikation.


Die stark an Hypertalk angelehnte, inzwischen aber massiv erweiterte Programmiersprache nennt sich revTalk. Die Entwicklungsumgebung ist in Version 4, die Mitte November offiziell auf den Markt kommt, in den drei Varianten revMedia, revStudio und revEnterprise erhältlich. Während sich mit dem kostenlosen revMedia erstellte Anwendungen nur mit revWeb, der Web-Variante der Runtime-Engine, nutzen lassen, erlauben revStudio und revEnterprise das Erstellen von kompilierten Standalone-Anwendungen und bieten zusätzliche Funktionen wie SQL-Datenbankzugriff, Erweiterung über native Plug-ins und ein Web-Browser-Objekt, das sich in die Anwendungen einbauen lässt. Bei revEnterprise sind zudem Lizenzen für Entwicklungsumgebung auf allen drei Plattformen sowie Zugriff auf Alpha- und Betaversionen inklusive.


Stacks, Cards, Objekte und Messages

Die Basis einer Revolution-Anwendung bilden ein oder mehrere «Stacks» – jeder Stack entspricht einem Fenster, das in der Anwendung zum Einsatz kommen soll. Jede Anwendung enthält einen «Mainstack», weitere Fenster wie Dialogboxen oder Pop-ups werden in Form von «Substacks» umgesetzt. Ein Stack enthält eine oder mehrere «Cards», auf denen Textfelder, Bilder, Buttons und andere Elemente per Drag&Drop plaziert werden.


Jedes Objekt hat eine Reihe von Eigenschaften, die sowohl im Property-Inspektor festgelegt als auch zur Laufzeit per Script geändert werden können. Der Entwickler kann zusätzlich weitere benutzerdefinierte Eigenschaften anlegen.


Revolution arbeitet nach einem Event- und Message-basierten Modell: Stacks, Cards und Objekte kommunizieren untereinander über Messages. Vom Nutzer oder vom Betriebssys-t-em generierte Ereignisse wie Mausklicks nimmt die Revolution-Engine entgegen und leitet sie ebenfalls als Message an das betreffende Objekt weiter.


Mit wenigen Ausnahmen werden solche Messages jedoch nicht automatisch verarbeitet: Im Script des betreffenden Objekts muss dazu ein «Handler» angelegt werden – im Fall eines Mausklicks sieht dies beispielsweise so aus:


Falls das Objekt, das angeklickt wurde, nicht über einen geeigneten Handler verfügt, wird die Message zum hierarchisch nächsthöheren Objekt weitergeleitet – der Message-Pfad läuft vom einzelnen Objekt über die Card, auf der sich das Objekt befindet, zum Stack, der die Card enthält. So lassen sich Handler, die für mehrere Objekte benötigt werden, auf der passenden Ebene zusammenfassen. Handler, die in mehreren Stacks genutzt werden sollen, kann man zudem in sogenannte Library Stacks auslagern.


Neben Handlern kennt Revolution auch Funktionen, die Parameter entgegennehmen und ein Resultat zurückgeben. Sowohl Handler als auch Funktionen unterstützen zudem lokale und globale Variablen.



Umfassendes Feature-Set

Mit Revolution lassen sich nicht nur einfache Multimedia-orientierte Anwendungen erstellen. Die Programmiersprache bietet mit über 1500 Befehlen und zahlreichen Objektarten umfassende Möglichkeiten, die mit Ausnahme von besonders rechenintensiven Aufgaben praktisch alles zulassen – und solche Fälle können mit einer nativ programmierten External-Funktion abgedeckt werden. Einige Highlights aus dem Feature-Set:


? Animation: Bildschirmobjekte wie Bilder und Buttons können mit einfachen revTalk-Befehlen plaziert, bewegt und ein- oder ausge-blendet werden. Beim interaktiven Verschieben von Objekten durch den Nutzer erkennt Revolution auch Drag&Drop-Bedingungen.


? Arrays: revTalk ermöglicht zweidimensionale Arrays; durch Verschachtelung lassen sich zudem komplexe mehrdimensionale Datenstrukturen aufbauen.


? Clipboard-Handling: revTalk ermöglicht Zugriff auf die systemweite Zwischenablage, wobei verschiedene Formate unterstützt werden.


? Kompression: Revolution liest und schreibt komprimierte Daten in den Formaten gzip und zip (nur revStudio und revEnterprise).


? Support für Sockets: Revolution unterstützt Sockets und ermöglicht so die Kommunikation mit allen Socket-basierten Systemen. Via Sockets lassen sich auch eigene Protokolle definieren.


? Data-Grid-Objekt: In Version 4 bietet Revolution neben gewöhnlichen Tabellen ein Data-Grid-Objekt, mit dem sich Daten in verschiedenen Formaten wie Text und Bilder ästhetisch ansprechend und effizient präsentieren lassen. Die Daten können dabei auch von externen Quellen wie Dateien oder Datenbanken stammen (nur revStudio und rev-Enterprise).


? Textverarbeitung: revTalk bietet Möglichkeiten zur Verarbeitung von Textstrings, die sich in keiner anderen Programmiersprache finden. Die Sprache erlaubt nicht nur den Zugriff auf einzelne Zeichen einer Kette, sondern versteht auch «Chunk Expressions», mit denen man auch auf Wort- und Zeilenebene mit dem Text arbeiten kann. Mit dem Statement


überträgt man beispielsweise die ersten vier Wörter, die in ein Textfeld eingegeben wurden, in ein anderes Feld.


Für Einsteiger und Profis

Mit seinen vielfältigen Möglichkeiten eignet sich Revolution für verschiedene Anwenderklassen, vom absoluten Einsteiger, der das Programmieren erlernen möchte, bis zum Profi, der möglichst rasch eine kundenspezifische Anwendung erstellen will. Der Umgang mit der Entwicklungsumgebung macht Spass – vor allem auch, weil nicht bei jeder kleinen Änderung neu kompiliert werden muss: In Revolution schaltet man per Mausklick zwischen Edit- und Run-Modus um. Der native Code für die jeweilige Zielplattform wird erst erstellt, wenn die fertige Anwendung mit dem Menübefehl «Save as Standalone Application» exportiert wird.


Die Oberfläche der Entwicklungsumgebung erscheint einerseits einfach, auf der anderen Seite ist vor allem der Property-Inspektor mit seinen äusserst zahlreichen Einstellmöglichkeiten recht komplex – zumal die Einstellungen auf zehn Ebenen verteilt sind, auf die man jeweils über ein Pop-up-Menü zugreift. Das erweist sich in der Praxis oft als sperrig – eine Einteilung mit Tabs wäre hier wohl passender. Auch sonst gibt sich die Bedienung gelegentlich etwas störrisch, zum Beispiel bei der Manipulation der Zellen in einer Tabelle.


Der integrierte Script-Editor überzeugt dagegen – er bietet nicht nur Syntax-Highlighting, einen Debugger und einen Variable Watcher, sondern zeigt zum gewählten Befehl auch gleich die passende Dokumentation an. Dennoch gibt es mit Galaxy bereits einen erweiterten Editor eines Drittherstellers.


In Zukunft wird Revolution noch interessanter: Der Hersteller dehnt die Reichweite der revTalk-Sprache von Standalone- und browserbasierten Anwendungen, die auf das revWeb-Plug-in angewiesen sind, künftig auf die Serverseite aus. Mit der Server-Engine revServer können auch Scripts zur serverseitigen Verarbeitung in revTalk formuliert werden – der revTalk-Code wird analog zu PHP in den HTML-Code einer Webseite eingefügt.


Im Moment steht die Server-Engine erst den Abonnenten des hauseigenen -Hos-t--ing-Dienstes On-Rev in einer Alphaversion zur Verfügung, später soll revServer auch für die Installation auf eigenen Webservern auf den Markt gebracht werden.

(ubi)


Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Wie hiess im Märchen die Schwester von Hänsel?
GOLD SPONSOREN
SPONSOREN & PARTNER