Suche
Dörrobst mit Biss

Prune: Ein Konzept für einen Code-Editor, der kein Text-Editor ist

Michael Thomas

© Shutterstock.com/Nataliya Arzamasova

Begründer des Extreme Programming, Mitautor und Erstunterzeichner des Manifests für agile Software-Entwicklung, Entwickler des Smalltalk-Testframeworks SUnit: Kent Beck ist in der Programmiererlandschaft ein bunter Hund. Nun hat der Starprogrammierer, der bereits seit längerem bei Facebook tätig ist, seinen nächsten Coup gelandet: Prune („Dörrpflaume“, aber auch: „to prune“ = „zurechtstutzen“) ist ein experimenteller Code-Editor, der kein Text-Editor ist. Ein großer Wurf – mit einer Einschränkung.

„Die Bearbeitung von Programmen via Texteditor taugt im Grunde nicht viel, trotzdem wird es seit Jahrzehnten so gemacht“. Mit diesem Satz lässt sich die Motivation, die hinter Kent Becks Arbeit an Prune steht, wohl recht treffend beschreiben. Das experimentelle Projekt eröffnet die Möglichkeit, die Baumstruktur direkt via eingegebenen Befehlen zu bearbeiten und die Ergebnisse in ein vertrautes Textformat zu übertragen. Dabei bietet Prune keine Textbearbeitungsfunktionen; Programme werden durch die Erstellung, Löschung und Re-Organisation von Knoten im abstrakten Syntaxbaum erzeugt.

Baumtransformationen

Die grundlegende Operation in Prune ist die Transformation: Prune nimmt sich einen Programmbaum vor und erzeugt einen weiteren. So kann beispielsweise eine Anweisung in einem Schritt konditional gemacht werden. Diese Transformation gehört zu den sog. „Wrap“-Transformationen; die aktuelle Auswahl wird zum Kind eines neuen Knoten gemacht, die Auswahl durch den neuen Knoten ersetzt. Andere Transformationen ersetzen beispielsweise einen Elternknoten durch eines oder mehrere seiner Kinder. Wieder andere erstellen oder löschen Knoten oder ordnen diese neu an.

Die Transformationen sind dabei atomar, d. h. ein syntaktisch korrektes Programm führt wiederum zu einem syntaktisch korrekten Programm. Da die Programme somit sozusagen standardmäßig syntaktisch korrekt sind, sollen Fehler deutlich reduziert werden. Neue Transformationen können teilweise durch die Synthese vorhandener entstehen, anstatt neuen Code schreiben zu müssen. Darüber hinaus sind die Transformationen reversibel – eine Eigenschaft, die vielen Text-Editoren abgeht.

TBD-Knoten und Vorauseingabe

Als einen glücklichen Zufall beschreibt Beck im Zusammenhang mit Transformationen die „Entdeckung“ des „TBD-Knoten“: TBD steht dabei für „to be determined“, der Knoten repräsentiert also Code, der erst zu einem späteren Zeitpunkt eingefügt wird  ein Feature, das Beck zufolge in so mancher Situation hilfreich sein dürfte.

Ein Risiko des Projekts sah Beck in der potentiell bis in die tausende gehenden Anzahl an Transformationen. Tatsächlich genügen offenbar jedoch rund einhundert Transformationen für die Arbeit mit JavaScript, was zwar immer noch viel ist. Allerdings begegnet Prune diesem Umstand mit Typeahead  der Vorauseingabe: Beginnt der Nutzer mit der Eingabe, so „errät“ Prune, welche Transformation gemeint ist. Gibt man etwa „if“ ein, weist dies auf eine konditionale Transformation hin, was durch ein folgendes Leerzeichen bestätigt wird  die Transformation wird aufgerufen. Mit etwas Übung soll das Pruning dem herkömmlichen Tippen ähneln. Im Gegensatz zu letzterem erscheinen Zeichen wie etwa normale oder geschweifte Klammern in Prune jedoch automatisch. Das Ergebnis: Weniger Tastenanschläge, mehr Effizienz.

Die Zukunft: Ungewiss

Ursprünglich entstanden ist Prune als Teilzeitprojekt während eines frei verfügbaren Monats, den Facebook seinen Programmierern nach einem Jahr Mitarbeit im selben Team gewährt. Ein erster Prototyp wurde fertig gestellt, in der Folgezeit sammelten sich am Projekt Interessierte in einer geschlossenen Facebook-Gruppe und wurden mit Demos und Videos versorgt. Schlussendlich ließen Beck und Co. jedoch die bereits in der Frühzeit des Projekts aufkeimende Einsicht zu, dass die meisten Programmierer im Vergleich zu ihren anderen Tätigkeiten nur sehr wenig Zeit mit der Manipulation von Programmen verbringen. Eine weitere Arbeit an Prune, so Beck, sei deshalb für ihn nicht wirtschaftlich.

Allerdings, so Beck weiter, wünscht er sich, dass ein anderer die Fackel aufnimmt und somit die im Rahmen von Prune erarbeiteten Ideen weitergeführt werden. Das Problem: Weder ein funktionierender Prototyp, noch der Quellcode von Prune sind bislang verfügbar, noch nicht einmal ein Screencast, geschweige denn Screenshots wurden der Allgemeinheit zugänglich gemacht.  In den Kommentaren gibt Beck zwar einen Grund für die bislang nicht erfolgte Freigabe des Quellcodes an:

We aren’t open sourcing the code because it is not a supported project

Die Vermutung, dass Facebook das Projekt, das streng genommen in Becks Arbeitszeit entstand, nicht freigeben möchte, dürfte allerdings auch nicht völlig aus der Luft gegriffen sein. Ob Prune also jemals das Licht der Welt erblickt, ist zur Zeit äußerst fraglich.

Aufmacherbild: prunes in a bowl on a dark wood background von Shutterstock.com / Urheberrecht: Nataliya Arzamasova

Geschrieben von
Michael Thomas
Michael Thomas
Michael Thomas studierte Erziehungswissenschaft an der Johannes Gutenberg-Universität Mainz und arbeitet seit 2013 als Freelance-Autor bei JAXenter.de. Kontakt: mthomas[at]sandsmedia.com
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: