Suche
Segel streichen!

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

Redaktion JAXenter

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.

Ben Fry hat einen Doktortitel der Aesthetics + Computation Group des MIT Media Laboratory, wo er über die Kombination von Computerwissenschaften, Statistik, Grafikdesign und Datenvisualisierung zum Verstehen von Informationen forschte. Nachdem er seine Dissertation vervolsständigte, entwickelte er Tools für die Visualisierung genetischer Daten. Er ist Autor (unter anderem Visualizing Data und Getting started with Processing), stellte seine Werke im Museum of Modern Arts und dem International Center of Photography in New York aus und war an Filmen wie Minority Report und The Hulk beteiligt. Im Jahr 2011 wurde er von Fast Company zu einem der 50 einflussreichsten Designern Amerikas ernannt und hat Vorträge über Design, Daten und Programmierung auf fünf Kontinenten gehalten.

Die Pirates of the JVM

Geschrieben von
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.