Skip to main content

Was ist funktionale Programmierung?

Die funktionelle Programmierung ist ein Programmierparadigma, bei dem die Berechnungsphase die Bewertung von Ausdrücken ist.Einige Merkmale sind die Verwendung von Funktionen höherer Ordnung, Referenztransparenz und fauler Bewertung.Die Vorteile des Programmierstils umfassen, dass Programme leicht zu lesen sind, sehr zuverlässig sind und in Komponenten unterteilt werden können.Nachteile sind, dass Berechnungen langsam sein können und sich der Stil und die Syntax völlig von anderen gängigen Programmierstilen unterscheiden.Der funktionale Programmierstil wird häufiger von Akademikern als von Informatikfachleuten angenommen.

Wie der Name schon sagt, sind Funktionen ein grundlegender Bestandteil dieses Programmierparadigmas.Funktionen können innerhalb anderer Funktionen verschachtelt werden, die als Funktionen höherer Ordnung bezeichnet werden, und jede Funktion höherer Ordnung kann in Bausteinfunktionen unterteilt werden, die leicht zu verstehen und zu debuggen.Beispiele für einige Funktionen höherer Ordnung sind Karte und Nest.Die Funktionskarte übernimmt eine Funktion f und die Liste der Variablen, zum Beispiel (x, y, z) und gibt das Ergebnis in einer Liste an: Karte [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))).

Pure funktionelle Programmierung nimmt einen Eingang an und gibt einen Ausgang zurück, ohne jemals den Status einer Variablen zu ändern.Mit anderen Worten, eine Funktion mit derselben Eingabe liefert immer die gleichen Ergebnisse, unabhängig davon, was zuvor im Programm aufgetreten ist.Dies wird als Referenztransparenz bezeichnet.Da mathematische Funktionen referenz transparent sind, ist die funktionelle Programmierung für viele Mathematiker, Ingenieure und Wissenschaftler intuitiv.

Die Referenztransparenz von Funktionen bedeutet, dass die Reihenfolge der Funktionsbewertung nicht wichtig ist.Daher müssen Funktionen erst bewertet werden, wenn ihre Ergebnisse benötigt werden, was als faule Bewertung bezeichnet wird.Dies steht im völligen Gegensatz zur imperativen Programmierung, bei der ein Programm mit dem ersten Befehl beginnt und bis zum letzten Befehl durch die Liste läuft.Lazy Evaluation übergreift Teile des Programms, die nicht logisch folgen oder überflüssig sind, was das Programm automatisch optimiert und die Rechenzeit verkürzen kann.

Die funktionale Programmierung hat gegenüber anderen Programmierparadigmen viele Vorteile.Funktionen mit klaren Eingängen und Ausgängen sind leicht zu lesen und zu verstehen.Sobald eine Funktion gründlich debuggiert ist, kann sie in anderen Anwendungen zuverlässig verwendet werden.Multicore -Maschinen können möglicherweise Funktionen berechnen, die unabhängig voneinander parallel bewertet werden, wodurch die Leistung von Programmen drastisch verbessert wird.Funktionsprogramme stützen sich stark auf Rekursion, was häufig weniger effizient ist als die Verwendung herkömmlicher Schleifen oder Iterationsmethoden.In der Tat kann funktionelle Programmierung ziemlich ungeschickt und schwer zu lernen sein, da sie anderen häufigeren Paradigmen wie objektorientierter Programmierung nicht ähnlich ist..Einige reine Sprachen sind Haskell und Erlang.Mathematica ist auf symbolische Mathematik spezialisiert, R ist auf Statistik spezialisiert und J ist auf Finanzanalysen spezialisiert.Multiparadigmsprachen wie Scala und F# unterstützt sowohl funktionale Programmier- als auch andere Programmierstile.