Suche
Interview mit Peter Kröner

Funktionale reaktive Programmierung: Was ReactiveX und Co. zu bieten haben

Kypriani Sinaris

Ob es sich bei der reaktiven Programmierung um ein neues Modell handelt oder Bekanntes neu verpackt wird, daran scheiden sich die Geister. Wir haben Peter Kröner, Webexperte und Speaker bei der MTC 2017, gefragt, welche Vorteile das alte, neue Modell hat und wie er es für sich entdeckte.

JAXenter: Reaktive Programmierung ist für sich schon ein Buzzword. In deiner Session geht es um funktionale reaktive Programmierung. Was steckt dahinter?

Peter Kröner: Ich nenne Functional Reactive Programming (FRP) immer „praktisch verwendbare funktionale Programmierung“. Funktionale Programmierung als Paradigma hat in der Theorie viele Vorteile, aber es ist manchmal ganz schön knifflig, das Paradigma im Programmieralltag einzusetzen. Vereinfacht gesagt, besteht funktionaler Code aus reinen Berechnungen, aber die meisten Programme machen weit mehr als bloße Berechnungen. Sie haben User Interfaces, machen Netzwerk-Requests oder speichern Daten ab. Mit Functional Reactive Programming kann man den Berechnungsteil seines Programms problemlos an interaktive Elemente anschließen und hat damit das beste aus beiden Welten: funktionale Datenverarbeitung und interaktive Anbindung an UI und IO.

JAXenter: Wie bist du zum FRP gekommen?

Peter Kröner: Ich bin irgendwo auf Twitter über den Autor der FRP-Library BaconJS gestolpert, in Folge auch über BaconJS selbst und dachte mir, dass das recht cool aussieht. Danach saß ich erst mal zwei Wochen lang mit dummem Gesicht vor der Library und habe nicht verstanden, wie ich auch meinen Code auf so cool aussehende Art und Weise formulieren kann. Erst später ist mir dann aufgegangen, wie FRP in das Gesamtkonzept von funktionaler Programmierung passt und welche Vorteile es mir bietet.

JAXenter: Kannst du ein Beispiel der funktionalen reaktiven Programmierung aus deiner Praxis nennen?

Peter Kröner: Ein Werkzeug, das ich jeden Tag als Webtechnologie-Erklärbär nutze, ist mein HTML5-Präsentations-Tool, dessen Kern mit RxJS gebaut ist. Man würde vielleicht annehmen, dass so etwas inherent stateful und imperativ sein muss. Aber tatsächlich besteht das Herz jeder Präsentation aus RxJS Observables. Als Eingangssignal nehme ich meine Steuerungskommandos (Pfeiltasten) als Event Stream her und verzahne das mit meinem Array von Slides.

Daraus kann ich alles Wichtige für die Präsentation ableiten: Welche ist die aktuelle Slide? Welche ist die nächste oder welche war die vorherige? Ein Vorteil, den ich dadurch habe, ist, dass mir das Erweitern des Präsentations-Frameworks immer sehr leicht gefallen ist, da jeweils nur mein Zustandsgraph etwas erweitern musste. Neue Ansicht? Synchronisation übers Netzwerk? Alles jeweils nur ein neues Observable, das von den vorhandenen Observables gespeist wird. FRP ist nicht die richtige Lösung für jedes Problem, aber es gibt Aufgaben, die sich mit FRP besonders gut lösen lassen.

Lesen Sie auch: Trash-driven Development: Wenn ein Feature nicht hinterfragt werden darf

JAXenter: Wie müssen Programmierer für die funktionale reaktive Programmierung umdenken?

Peter Kröner: FRP ist in letzter Konsequenz normales funktionales Programmieren. Inwiefern man umdenken muss, hängt davon ab, aus welcher Richtung man kommt. Allgemein muss man lernen, zwischen dem Berechnungsteil seines Programms und den Nebenwirkungen, z.B. UI und IO, zu unterscheiden. Man muss sich explizit klar machen, welche Ausgangszustände bzw. Inputs man hat und welches das Endergebnis einer Operation sein soll. Danach kann man seine Inputs mit funktionalen Mitteln in den Zielzustand übersetzen. Das klingt offensichtlich und wie etwas, das man beim Programmieren generell machen sollte – aber bei FRP ist es Pflicht, da man sonst gar nicht weiß, wie man anfangen soll. Stift und Papier sind sehr nützlich bei der Planung von Transformationsketten und Zustandsnetzwerken.

JAXenter: Stichwort Rx-Projekt: Kannst du kurz erklären, was dahinter steckt, was die Vorteile davon sind und warum du es nutzt?

Peter Kröner: Das ReactiveX-Projekt bietet FRP-APIs für alle möglichen Plattformen – Java, .NET, JavaScript und viele weitere. Allen Implementierungen liegt die gleiche Philosophie zugrunde, sodass man viel vom Wissen über APIs und allgemeine Fragen von z. B. RxJS auf andere Plattformen wie RxJava übertragen kann. Alles ist sehr durchdacht und die APIs lassen kaum Wünsche offen. Der Preis dafür ist eine nicht zu unterschätzende Komplexität, die den Einstieg in das für viele ungewohnte Paradigma nicht gerade einfacher macht.

kroener_peterDer Webtechnologieexperte und Buchautor Peter Kröner forscht über die Webstandards von morgen. Was er über HTML5, CSS3 und neue JavaScript-Standards herausfindet, schreibt er in Bücher und Blogposts oder vermittelt es in Seminaren, Workshops und Vorträgen im ganzen Land weiter. Zuvor war er als selbstständiger Webdesigner und Frontend-Entwickler tätig.
Geschrieben von
Kypriani Sinaris
Kypriani Sinaris
Kypriani Sinaris studierte Kognitive Linguistik an der Goethe Universität Frankfurt am Main. Seit 2015 ist sie Redakteurin bei JAXenter und dem Java Magazin.
Kommentare

Schreibe einen Kommentar

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