Was ist funktionale Programmierung?

Funktionale Programmierung ist ein Programmierparadigma, bei dem die Berechnungsbasis die Bewertung von Ausdrücken ist. Einige Merkmale sind die Verwendung von Funktionen höherer Ordnung, referenzielle Transparenz und verzögerte Auswertung. Zu den Vorteilen des Programmierstils gehört, dass Programme einfach zu lesen, sehr zuverlässig und in Komponenten zerlegbar sind. Nachteile sind, dass die Berechnungen langsam sein können und Stil und Syntax sich vollständig von anderen gängigen Programmierstilen unterscheiden. Der funktionale Programmierstil wird häufiger von Akademikern als von Informatikern geschätzt.

Wie der Name schon sagt, sind Funktionen ein grundlegender Bestandteil dieses Programmierparadigmas. Funktionen können in andere Funktionen verschachtelt sein, die als Funktionen höherer Ordnung bezeichnet werden, und jede Funktion höherer Ordnung kann in Bausteinfunktionen unterteilt werden, die einfach zu verstehen und zu debuggen sind. Beispiele für Funktionen höherer Ordnung sind Map und Nest. Die Funktion Map nimmt eine Funktion F und die Liste der Variablen, zum Beispiel (x, y, z) und gibt das Ergebnis in einer Liste aus: Map [F, (x, y, z)] = (F (x), F (y), F (z)). Nest übernimmt die Funktion F, die Variable x und die Anzahl der Iterationen: Nest [F, x, 3] = F (F (F (x)).

Reine funktionale Programmierung nimmt eine Eingabe entgegen und gibt eine Ausgabe zurück, ohne den Zustand einer Variablen zu ändern. Mit anderen Worten, eine Funktion mit derselben Eingabe liefert immer dieselben Ergebnisse, unabhängig davon, was zuvor im Programm aufgetreten ist. Dies nennt man referentielle Transparenz. Da mathematische Funktionen referenziell transparent sind, ist die funktionale Programmierung für viele Mathematiker, Ingenieure und Wissenschaftler intuitiv.

Die referentielle Transparenz von Funktionen bedeutet, dass die Reihenfolge der Funktionsbewertung nicht wichtig ist. Daher müssen Funktionen erst ausgewertet werden, wenn ihre Ergebnisse benötigt werden, was als verzögerte Auswertung bezeichnet wird. Dies steht im völligen Gegensatz zur imperativen Programmierung, bei der ein Programm mit dem ersten Befehl beginnt und die Liste bis zum letzten Befehl durchläuft. Lazy Evaluation überspringt Teile des Programms, die nicht logisch folgen oder überflüssig sind, was das Programm automatisch optimiert und die Rechenzeit verkürzt.

Funktionale Programmierung hat viele Vorteile gegenüber anderen Programmierparadigmen. Funktionen mit übersichtlichen Ein- und Ausgängen sind einfach zu lesen und zu verstehen. Sobald eine Funktion gründlich getestet wurde, kann sie zuverlässig in anderen Anwendungen verwendet werden. Multicore-Computer können möglicherweise Funktionen berechnen, die unabhängig voneinander parallel ausgewertet werden, wodurch die Leistung von Programmen drastisch verbessert wird.

Leider eignen sich nicht alle Programme für paralleles Rechnen, und das Rechnen von Funktionsprogrammen kann ziemlich langsam sein. Funktionale Programme hängen stark von der Rekursion ab, die häufig weniger effizient ist als die Verwendung herkömmlicher Schleifen oder Iterationsmethoden. Tatsächlich kann die funktionale Programmierung recht umständlich und schwer zu erlernen sein, da sie anderen gängigen Paradigmen wie der objektorientierten Programmierung nicht ähnelt.

Akademiker bevorzugen in der Regel die funktionale Programmierung, da sie eine klare und verständliche Möglichkeit bietet, komplexe Probleme der realen Welt zu programmieren. Einige reine Sprachen sind Haskell und Erlang. Mathematica ist auf symbolische Mathematik spezialisiert, R auf Statistik und J auf Finanzanalyse. Multiparadigmensprachen wie Scala und F # unterstützen sowohl die funktionale Programmierung als auch andere Programmierstile.

ANDERE SPRACHEN

War dieser Artikel hilfreich? Danke für die Rückmeldung Danke für die Rückmeldung

Wie können wir helfen? Wie können wir helfen?