JVM-Sprache Processing: die Einstiegsdroge ins Coden für Designer [Pirates of the JVM]

Nach den zahlreichen Segelturns auf den Weltmeeren der JVM wird es Zeit, die Segel zu streichen. Und das meinen wir in diesem Fall wörtlich. Die Pirates of the JVM landen für die dringenden optischen Nachbesserungen auf der Insel Processing. Der berühmte Designer Ben Fry entwickelte den Java-Dialekt als Sprache für das Erlernen des Programmierens im Kontext der visuellen Künste.
Ben Fry gibt unserer Serie über die JVM-Piraten das gewisse Etwas in Sachen Stil und Ästhetik. Kein Wunder, immerhin hat er einen Doktortitel in Ästhetik vom MIT Media Laboratory. Die von ihm mitdesignte Sprache Processing ist eigentlich keine vollständige Sprache, sondern mehr ein Java-Dialekt. Welchen Sinn und Zweck sie erfüllt und welche Vorteile sie hat, erklärt er im Gespräch an Deck.

Klick auf die Karte für die komplette Infografik
JAXenter: Was hat dich dazu bewogen, Processing zu entwickeln? Welche Vorteile bietet Processing, die andere Programmiersprachen nicht haben?
Ben Fry: Als wir Processing erstellten, wollten wir damit dreierlei erschaffen:
- Ein Skizzenbuch für unsere eigene Arbeit, das den Großteil der Arbeitsschritte erleichtern sollte, die wir täglich durchführen,
- eine Lehrumgebung für diese Art von Fortschritt und
- ein Einstieg zu komplizierteren oder schwierigeren Sprachen wie einem vollständigen Java oder C++ – also praktisch eine Einstiegsdroge zu schwierigeren Dingen, die „geekier“ sind.
Wo sich diese drei Punkte treffen, findet ein Ausgleich zwischen Geschwindigkeit und Simplizität statt. Würden wir etwa keinen Wert auf Geschwindigkeit legen, würde die Nutzung von Python, Ruby und vielen anderen Scripting-Sprachen deutlich mehr Sinn ergeben. Das gilt insbesondere in Bezug auf die Einfachheit und die Didaktik. Würde uns andererseits der Übergang zu fortschrittlicheren Programmiersprachen nicht interessieren, würden wir vermutlich auf die C-artige (bzw. Algol-artige) Syntax verzichten.
Java ist ein guter Startpunkt für eine Sketching-Sprache, denn Java ist wesentlich nachsichtiger als C++ und erlaubt es Nutzern, Sketches für die Distribution auf viele Plattformen zu exportieren. Als wir im Jahr 2001 starteten, nutzten viele Leute Java, um Web-Applets zu erstellen, was für das anfängliche Wachstum des Projektes wichtig war. Heutzutage exportieren wir immer noch fleißig, allerdings Anwendungspakete, die auf Mac-, Windows- und Linux-Plattformen laufen.
Processing war nie als das ultimative Environment oder Sprache gedacht. Um ehrlich zu sein, ist es einfach Java mit einem neuen Grafik- und Utility-API sowie einigen Vereinfachungen. Grundsätzlich ist Processing schlicht eine Sammlung unserer Erfahrung beim Erstellen von Dingen und dient der Vereinfachung derjenigen Teile, die wir gerne einfacher haben wollten.
JAXenter: Kannst du die Kernprinzipien der Sprache darlegen?
Ben Fry: Das Konzept von Processing ist es, die guten Dinge in den Vordergrund zu stellen, damit die Leute durchstarten können. Wir möchten erreichen, dass die Leute möglichst schnell mit dem Experimentieren beginnen und sich dann, sobald sie herausgefunden haben, wie sie Dinge erstellen, zu fortschrittlicheren Konzepten wie Klassen, Objekte oder Threading beschäftigen.
Bei uns heißt ein Projekt Sketch, denn wir wollen, dass die Nutzer darin kleine Code-Snippets sehen, die etwas Nützliches tun und sich bei Bedarf nicht scheuen, sie zu verwerfen und neu zu starten. Das ist quasi genau umgekehrt zu dem, was Softwareentwicklung gewöhnlich ausmacht, nämlich sich erst eine Struktur zu überlegen und dann den Code nach dieser aufzubauen. Gerade für Beginner in der Welt des Codings ist es wichtig, dass sie sich nicht in Details verzetteln, bevor sie überhaupt irgendwas haben machen können. Und für diejenigen, die sich bereits mit dem Programmieren auskennen, ist dieses Konzept wichtig, um schnell in die Arbeit einsteigen zu können.
Auch Prägnanz und Simplizität des APIs sind Ziel von Processing: wir wollten ein API, das auf eine Seite und möglichst problemlos in den Kopf des Nutzers passt. Das Kommando, um Linien die Breite von 8 Punkten zu geben, ist etwa strokeWeight(8)
. Bei Java2D müsste man erst Objekte wie BasicStroke()
aufsetzen.
JAXenter: Wie würde ein typisches Programm mit Processing aussehen?
Ben Fry: Ein typisches „Hello World“ ist in unserem Fall eher das Zeichnen einer Linie:
line(20, 20, 80, 80);
Dies ist eine einzige Codezeile, sie beinhaltet kein Threading, kein Doppel-Buffering, kein neues BasicStroke()
. Man schreibt einfach eine Zeile, drückt den Run-Button und sieht, wie etwas auf dem Bildschirm auftaucht. Damit die Linie sich allerdings bewegt und der Maus folgt, wird der Code erweitert:
void draw() { line(width/2, height/2, mouseX, mouseY); }
Um das Gleiche auf dem vollen Bildschirm und mit OpenGL-Grafiken durchzuführen, sieht der Code schließlich wie folgt aus:
void setup() { fullScreen(P3D); } void draw() { line(width/2, height/2, mouseX, mouseY); }
An dieser Stelle kann man auch Klassendeklarationen und reguläre Java-Syntax verwendet, aber es ist nicht notwendig, Klassen zu verstehen, nur damit etwas auf dem Bildschirm angezeigt wird. Und da dies in Wirklichkeit eine Java-Anwendung ist und als solche genutzt werden kann, sieht das Äquivalent so aus:
public class Example extends PApplet { public void setup() { fullScreen(P3D); } public void draw() { line(width/2, height/2, mouseX, mouseY); } static public void main(String[] args) { PApplet.main(Example.class); } }
JAXenter: Für welche Art von Anwendungen eignet sich Processing besonders gut? Für welche eher weniger?
Ben Fry: Wir bei Fathom setzen Processing für die Auswertung und Visualisierung von großen Datensätzen professionell ein. Manchmal werden diese Anwendungen dann nach JavaScript portiert, das geschieht aber nur, wenn wir definitiv wissen, was wir mit den Daten tun möchten. Wir versuchen uns darauf zu konzentrieren, dass Processing sich so einfach nutzen lässt wie Scripting-Sprachen, dabei aber genauso performant ist wie eine vollständige Sprache.
JAXenter: Wie ist der derzeitige Status Quo der Sprache?
Ben Fry: Wir sind gerade mitten in der 3.x-Release-Linie.
JAXenter: Welche Pläne gibt es für die Zukunft von Processing?
Ben Fry: Seit kurzem unterstützt Processing mehr Varianten: p5.js erfindet das Konzept in Bezug auf JavaScript mit dem Web als Plattform ein wenig neu. Es gibt auch eine Jython-Version für Nutzer, die die Python-Syntax bevorzugen. In diesem Sommer wird ein Student im Zuge des Google Summer of Code auch eine Processing-Version für C Python erstellen. Es gibt sogar eine Version, die zu R portiert werden kann, das auf der JVM läuft.
Wir mögen es sehr, mit verschiedenen Sprachen zu arbeiten, da man manchmal auch beim Zeichnen mit der Hand verschiedene Materialien verwenden mag: Mal möchte man einen Stift, mal einen Bleistift und manchmal möchte auch jemand einfach Wachsmalstifte verwenden. Jede Art von Werkzeug hat sein Anwendungsgebiet, in dem es nützlich ist.
JAXenter: Wie steigt man am besten in die Arbeit mit Processing ein?
Ben Fry: Mein Tipp: einfach auf unserer Homepage vorbeischauen und sich Processing herunterladen. Die Anwendung muss man dann einfach nur ausführen und File | Examples
auswählen. Dadurch öffnet sich ein Fenster zu hunderten von Beispielen, die wir mit der Software durchgeführt haben. Anschließend kann es nicht schaden, sich die ganzen Bibliotheken anzusehen, die von der Community entwickelt wurden und die Funktionalität auf fantastische Weise ergänzen.
Weitere Details zu Processing gibt es auf GitHub, den Code findet man dort ebenfalls: https://github.com/processing/processing.

Die Pirates of the JVM
Gehen wir auf Schatzsuche! In der Infografik „Pirates of the JVM“ verbirgt sich so manches Programmiersprachen-Juwel, das inspirierte Entwickler auf der Java-Plattform für sich entdecken werden. Doch sehen Sie selbst…
- Frege – das Haskell für die JVM: Eine Einführung
- Eclipse Golo – leichtgewichtig und dynamisch auf der JVM
- Eclipse Xtend – kompakt, statisch, perfekt für die Codegenerierung
- Eta – rein funktional auf der JVM
- Kotlin – lesbar, bündig, sicher
- Gosu – Die skriptbare Universalsprache mit offenem Typsystem
- Jython – Python in der JVM-Welt
- Clojure – das Lisp für die Java-Plattform
- Lux – der perfekte Mix aus Haskell und Clojure
- Golo – die dynamische Programmiersprache für die Java-Plattform
- Fantom – pragmatisch und plattformübergreifend
- Processing – die Einstiegsdroge ins Coden für Designer
Piratenflagge via Shutterstock.com / katyam1983
Hinterlasse einen Kommentar