Sobes.tech
Middle

Was ist funktionale Programmierung?

sobes.tech KI

Antwort von AI

Funktionale Programmierung ist ein Programmierparadigma, bei dem Berechnungen als Auswertung mathematischer Funktionen betrachtet werden, wobei veränderlicher Zustand und veränderbare Daten vermieden werden.

Grundprinzipien:

  • Reine Funktionen: Funktionen, die bei gleichen Eingabedaten immer dasselbe Ergebnis liefern und keine Nebenwirkungen haben (z.B. Änderung externer Variablen, Ein-/Ausgabe).
  • Unveränderlichkeit: Daten ändern sich nach ihrer Erstellung nicht. Jede "Änderung" erstellt eine neue Kopie der Daten.
  • Funktionen als First-Class-Objekte: Funktionen können als Argumente übergeben, von anderen Funktionen zurückgegeben und Variablen zugewiesen werden.
  • Referenzielle Transparenz: Ein Ausdruck kann durch seinen Wert ersetzt werden, ohne das Verhalten des Programms zu verändern. Dies steht in direktem Zusammenhang mit reinen Funktionen.

Vorteile:

  • Vorhersagbarkeit: Einfacher zu testen und zu debuggen aufgrund fehlender Nebenwirkungen.
  • Parallelisierung: Einfacher, Code parallel auszuführen, da kein gemeinsamer veränderlicher Zustand besteht.
  • Wartbarkeit: Der Code wird modularer und verständlicher.

Beispiel in JavaScript:

// Unreine Funktion (ändert den externen Zustand)
let total = 0;
function addToTotal(value) {
  total += value;
  return total;
}

// Reine Funktion (ändert den externen Zustand nicht, gibt einen neuen Wert zurück)
function add(a, b) {
  return a + b;
}

// Verwendung von Funktionen als First-Class-Objekte (Funktion als Argument)
function processArray(arr, handler) {
  return arr.map(handler);
}

const numbers = [1, 2, 3];
const doubledNumbers = processArray(numbers, x => x * 2);

Obwohl JavaScript keine strikt funktionale Sprache ist, ermöglichen seine Fähigkeiten (wie reine Funktionen, Array-Methoden map, filter, reduce) die Anwendung der Prinzipien der funktionalen Programmierung. Im Frontend-Development wird FP häufig in Bibliotheken und Frameworks (z.B. Redux, React mit Hooks) verwendet.