EinführungIn diesem Journal möchte ich die noch recht junge Entwicklungsumgebung TouchDevelop (
) von Microsoft Research behandeln. Mir geht es dabei nicht darum, Werbung für ein Fremdprodukt zu machen, sondern aufzuzeigen, wie die Zukunft insachen App-Entwicklung aussehen kann.
GeschichteIch befasse mich regelmäßig mit TouchDevelop und verfolge die Entwicklung quasi live mit. Angefangen hat alles mit einer Windows Phone-App (seinerzeit hieß sie noch TouchStudio), mit der man direkt auf dem Smartphone kleine, lauffähige Skripte schreiben konnte. Inzwischen ist TouchDevelop auch als WebApp direkt im Browser zu benutzen und läuft nicht nur auf Windows-Geräten. Auch mit dem iPhone, dem iPad und unter Safari für Mac OS X ist TouchDevelop lauffähig. Daher möge man mir auch nachsehen, dass die Screenshots in diesem Journal den Internet Explorer unter Windows 8 zeigen.
Die Startseite von TouchDevelop zeigt in Gruppen angeordnet sowohl eigene Skripte als auch Skripte von anderen Anwendern. Außerdem findet man Tutorials und Notifications.
Was ist TouchDevelop?TouchDevelop richtet sich an folgende Zielgruppe:
- Leute, die das Programmieren lernen möchten
- Leute, die "mal eben" eine App zaubern möchten
- Leute, die neue Bedienkonzepte insachen Softwareentwicklung ausprobieren möchten
TouchDevelop ist keine gewöhnliche Entwicklungsumgebung, wie man sie z.B. von Visual Studio, Eclipse oder XCode her kennt. Das wäre auch äußerst unvorteilhaft, denn wer möchte schon auf einem Touchscreen lange Befehle und Klammern, Anführungszeichen und was noch so alles in einer Programmiersprache vorkommt, schreiben. Deswegen ist TouchDevelop auch komplett für Touchscreens ausgelegt. Anstatt Befehle mühsam zu tippen, wählt man sie einfach aus und ergänzt ggf. nötige Parameter. Dabei reicht die Palette von einzelnen Methoden bis hin zu ganzen if-Verschachtelungen oder for-Schleifen - eben Elemente, die man aus einer Programmiersprache kennt. Ebenso findet man bekannte Datentypen wie Strings, Number, Boolean oder Collections wieder.
In TouchDevelop gibt es verschiedene "Namespaces" (z.B. Phone, Media, Web, Senses...), unter denen man entsprechende Methoden findet. So sind beispielsweise unter "Web" alle Funktionen hinterlegt, die irgendetwas mit Web-Aufrufen oder Web-Requests zu tun haben. Unter "Senses" findet man beispielsweise Funktionen zum Ansteuern einer Kamera.
TouchDevelop arbeitet komplett objektorientiert. Deswegen stellen Datentypen ebenso Methoden zur Verfügung wie o.g. Namespaces. So kann man beispielsweise zu einem String Funktionen wie Substring, Replace, Trim usw. verwenden - also genauso, wie man es aus den "hohen" Programmiersprachen auch kennt. Dabei muss man nicht aus dem Kopf wissen, wann man was anwenden kann. TouchDevelop zeigt immer nur die Auswahlmöglichkeiten an, die zum aktuellen Zeitpunkt möglich und sinnvoll sind.
Durch Berühren einer Programmzeile lässt sich diese Stück für Stück bearbeiten. TouchDevelop zeigt dabei immer nur Auswahlmöglichkeiten an, die im jeweiligen Kontext auch Sinn machen.
Das, was man in anderen Programmiersprachen als Klassen oder Module bezeichnet, sind in TouchDevelop schlicht und ergreifend Actions. Jede Action kann dabei eine beliebige Anzahl von Eingabe- als auch von Ausgabeparametern haben.
Links stehen Actions, Events usw. aufgelistet, rechts steht der Code.
Eine Suchfunktion sucht nicht nur nach Actions, sondern auch nach globalen Variablen, Objekten und Namespaces.
Über Events kann man Ereignisse wie das Anklicken eines Buttons, das Drehen des Telefons usw. behandeln. Je nach Aufbau des Programms können Events variieren.
Variablen können sowohl lokal als auch global angelegt werden. Das Umbenennen einer Variablen ändert dabei automatisch alle Stellen, an denen sie benutzt wird. Man hat also schon ein gewisses Refactoring eingebaut.
Neben Variablen lassen sich aber auch ganze Tabellen mit Spalten unterschiedlicher Datentypen anlegen. Auch Indizes und Querverweise sind vorgesehen. Denkbar wäre z.B., sich Daten von einem Webservice zu holen, diese in eine Tabelle zu schreiben und nach Abschluss die geänderten Daten wieder hochzuladen.
KonzepteNormalerweise hat man immer irgendetwas, auf dem man etwas ausgeben kann, also eine Konsole oder ein Fenster. In TouchDevelop nennt sich dieses Ausgabemedium "wall". Die wall ist also allgegenwärtig. Auf ihr platziert man Strings, man setzt Titel und Buttons, man definiert Farben, zeigt MessageBoxen an etc. Dementsprechend heißt der Namespace auch "Wall".
Klassisches Beispiel: die folgende Programmzeile schreibt den String "Hello World" auf die wall:
"Hello World"
post to wall
Wobei "Hello World" das einzige ist, dass man über eine Tastatur eintippen müsste.
Neben Strings gibt es aber auch schon fertige Objekte für Picture oder Music. TouchDevelop bringt also von sich aus die Fähigkeit mit, multimediale Inhalte einzulesen und darzustellen. Postet man ein Bild an die Wall, wird es angezeigt - logisch. Postet man hingegen eine Music an die Wall, dann zeigt TouchDevelop hierfür ein Kontrollelement mit dem Namen des Titels sowie Play/Pause. Man muss sich also selbst nicht um die Art der Darstellung kümmern.
Auch die Größe und Position eines Wall-Titels oder das Aussehen und die Funktion des von Windows 8 bekannten Zurück-Buttons ist vorgegeben und braucht programmseitig nicht mehr angepasst zu werden. Apps bekommen so ein einheitliches Erscheinungsbild.
Mit TouchDevelop kann man seine Skripte mit anderen teilen und veröffentlichen. Man kann aber auch "vollwertige" Apps daraus machen, und zwar für Windows Phone, Windows 8 und HTML 5, wobei der HTML 5-Export noch in der Beta-Phase steckt und nicht alle Funktionen so arbeiten wie gewünscht.
Aus seinen Skripten kann man Apps für Windows Phone, Windows 8 und HTML 5 bauen.
In den Settings des Skripts kann man angeben, welche Funktionalitäten die App benutzt (z.B. Zugriff auf die Kontaktliste, Kamera, Bewegungssensoren etc.). So wird dem Sandbox-Konzept, welches es bei Apple ja auch in ähnlicher Form gibt, Rechnung getragen.
Einloggen kann man sich bei TouchDevelop sowohl mit seiner Microsoft-ID als auch mit einem Facebook-Account. Der Code, den man dann produziert, wird in der Cloud gehalten und steht somit auf jedem Gerät zur Verfügung, auf dem man sich entsprechend anmeldet.
Eine Synchronisation mit der TouchDevelop-Windows Phone-App findet hier ebenfalls statt.
FazitTouchDevelop zeigt, dass es möglich ist, mit mobilen Geräten zu entwickeln. Das, was in iOS aufgrund der Lizenzbedingungen seitens Apple nicht erlaubt ist (nämlich Apps bereitzustellen, die von sich aus Code ausführen können), kann mit TouchDevelop kompensiert werden. Leider beschränken sich die Exportfunktionen derzeit nur auf Windows Phone, Windows 8 und HTML 5, doch die Entwicklung geht munter weiter. Und wenn die HTML 5-Funktion erstmal das finale Stadium erreicht hat, dann braucht vielleicht niemand mehr native Apps.
Ich habe mit TouchDevelop viel Spaß und empfehle jedem Interessierten, sich das mal anzuschauen.
Die WebApp erreicht man über
.
Wer sich mal schnell ein Bild machen möchte, was mit TouchDevelop möglich ist, der kann sich zwei mit TouchDevelop entwickelte HTML 5-Apps von mir anschauen: