Funktionale Programmierung baut ein Programm aus Funktionen, die Werte hineinnehmen und Werte zurückgeben, ohne nebenbei etwas zu verändern.
- Funktionale Programmierung
Eine Art, ein Programm zu ordnen: aus Funktionen, die allein aus ihren Eingaben ihr Ergebnis bilden und sonst nichts verändern.
Beispiel: „In der funktionalen Programmierung liefert dieselbe Eingabe immer dasselbe Ergebnis.“Abgrenzung zum Nebeneffekt: Ein Nebeneffekt ist alles, was eine Funktion außerhalb ihres Ergebnisses bewirkt, etwa eine Datei schreiben oder eine Anzeige ändern. Funktionale Programmierung drängt solche Stellen an den Rand des Programms.
Zwei Regeln, aus denen alles folgt
Die erste: Eine Funktion bildet ihr Ergebnis allein aus dem, was hineingegeben wurde. Die zweite: Jede Änderung erzeugt einen neuen Wert und lässt den alten unberührt. Statt eine Liste umzusortieren, entsteht eine neue sortierte Liste.
Daraus folgt die Eigenschaft, um die es eigentlich geht: Eine solche Funktion lässt sich allein prüfen, ohne das übrige Programm zu starten, und sie verhält sich bei jedem Aufruf gleich.
// verändert die vorhandene Liste
preise.sort();
// lässt sie in Ruhe und liefert eine neue
const sortiert = [...preise].sort();
// Kette aus Umformen, Einschränken, Zusammenrechnen
const summe = warenkorb
.filter((a) => a.verfuegbar)
.map((a) => a.preis * a.menge)
.reduce((gesamt, wert) => gesamt + wert, 0);Wo sie dir im Web begegnet
Beim Umgang mit Listen. Umformen, einschränken und zusammenrechnen sind funktionale Werkzeuge, und sie sind in JavaScript längst der übliche Weg. Wer sie benutzt, programmiert an dieser Stelle funktional, ohne den Begriff zu brauchen.
Dazu kommen die Oberflächen-Bibliotheken. Dort wird die Anzeige als Ergebnis des Zustands beschrieben, statt sie Schritt für Schritt zu verändern; auch das ist der funktionale Gedanke.
Warum kein Projekt ganz funktional ist
Weil ein Programm, das nichts verändert, auch nichts bewirkt. Irgendwo muss gespeichert, gesendet und angezeigt werden. Die Haltung dahinter lautet deshalb, den Kern frei von Nebeneffekten zu halten und sie an den Rändern zu sammeln, wo sie überschaubar bleiben.