Was ist funktionale Programmierung? Anleitung mit Beispiel

Was ist funktionale Programmierung?

Funktionale Programmierung (auch FP genannt) ist eine Denkweise über die Softwarekonstruktion durch die Erstellung reiner Funktionen. Dabei werden Konzepte gemeinsamer Zustände und veränderlicher Daten vermieden, die in der objektorientierten Programmierung zu finden sind.

Funktionale Sprachen konzentrieren sich eher auf Ausdrücke und Deklarationen als auf die Ausführung von Anweisungen. Daher hängt die Wertausgabe in FP im Gegensatz zu anderen Prozeduren, die von einem lokalen oder globalen Zustand abhängen, nur von den an die Funktion übergebenen Argumenten ab.

Merkmale der funktionalen Programmierung

  • Die Methode der funktionalen Programmierung konzentriert sich auf Ergebnisse, nicht auf den Prozess
  • Der Schwerpunkt liegt auf dem, was berechnet werden soll
  • Daten sind unveränderlich
  • Funktionale Programmierung Zerlegen Sie das Problem in „Funktionen“.
  • Es basiert auf dem Konzept mathematischer Funktionen, die bedingte Ausdrücke und Rekursion verwenden, um die Berechnung durchzuführen
  • Iterationen wie Schleifenanweisungen und bedingte Anweisungen wie If-Else werden nicht unterstützt

Geschichte der funktionalen Programmierung

  • Die Grundlage der funktionalen Programmierung ist die Lambda-Rechnung. Sie wurde in den 1930er Jahren für die funktionale Anwendung, Definition und Rekursion entwickelt.
  • LISP war die erste funktionale Programmiersprache. McCarthy hat es 1960 entworfen
  • In den späten 70er Jahren definierten Forscher der Universität Edinburgh die ML (Meta Language)
  • In den frühen 80er Jahren fügte die Hope-Sprache algebraische Datentypen für Rekursion und Gleichungsschlussfolgerung hinzu
  • Im Jahr 2004 Innovation der funktionalen Sprache „Scala“.

Funktionale Programmiersprachen

Das Ziel jeder FP-Sprache besteht darin, die mathematischen Funktionen nachzuahmen. Der grundlegende Berechnungsprozess unterscheidet sich jedoch in der funktionalen Programmierung.

Hier sind einige der bekanntesten funktionalen Programmiersprachen:

  • Haskell
  • SML
  • Clojure
  • Scala
  • erlang
  • Clean
  • F#
  • ML/OCaml Lisp / Schema
  • XSLT
  • SQL
  • Mathematica

Grundlegende funktionale Programmierterminologie und Concepts

Grundlegende funktionale Programmierterminologie und Concepts

Unveränderliche Daten

Unveränderliche Daten bedeuten, dass Sie problemlos in der Lage sein sollten, Datenstrukturen zu erstellen, anstatt bereits vorhandene zu ändern.

Referenzielle Transparenz

Funktionale Programme sollten Operationen so ausführen, als ob sie zum ersten Mal ausgeführt würden. So wissen Sie, was während der Ausführung des Programms möglicherweise passiert ist oder nicht, und welche Nebenwirkungen es hat. In der FP-Terminologie wird dies als referenzielle Transparenz bezeichnet.

Modularität

Modularer Aufbau erhöht die Produktivität. Kleine Module können schnell codiert werden und haben eine größere Chance auf Wiederverwendung, was sicherlich zu einer schnelleren Entwicklung von Programmen führt. Darüber hinaus können die Module separat getestet werden, was Ihnen hilft, den Zeitaufwand für Unit-Tests und Debugging zu reduzieren.

Wartbarkeit

Wartbarkeit ist ein einfacher Begriff, der bedeutet, dass die FP-Programmierung einfacher zu warten ist, da Sie sich keine Sorgen machen müssen, dass versehentlich etwas außerhalb der gegebenen Funktion geändert wird.

Erstklassige Funktion

„Erstklassige Funktion“ ist eine Definition, die Programmiersprachenentitäten zugeschrieben wird, deren Verwendung keiner Einschränkung unterliegt. Daher können erstklassige Funktionen überall im Programm erscheinen.

Schließung

Der Abschluss ist eine innere Funktion, die auf Variablen übergeordneter Funktionen zugreifen kann, auch nachdem die übergeordnete Funktion ausgeführt wurde.

Funktionen höherer Ordnung

Funktionen höherer Ordnung nehmen entweder andere Funktionen als Argumente entgegen oder geben sie als Ergebnisse zurück.

Funktionen höherer Ordnung ermöglichen Teilanwendungen oder Currying. Diese Technik wendet eine Funktion nacheinander auf ihre Argumente an, da jede Anwendung eine neue Funktion zurückgibt, die das nächste Argument akzeptiert.

Reine Funktion

Eine „reine Funktion“ ist eine Funktion, deren Eingaben als Eingaben deklariert werden und keine davon ausgeblendet werden sollte. Die Ausgänge werden auch als Ausgänge deklariert.

Reine Funktionen wirken auf ihre Parameter. Es ist nicht effizient, wenn nichts zurückgegeben wird. Darüber hinaus bietet es für die angegebenen Parameter die gleiche Ausgabe

Ejemplo:

Function Pure(a,b)
{
	return a+b;
}

Unreine Funktionen

Unrein funktioniert genau das Gegenteil von rein. Sie haben versteckte Ein- oder Ausgänge; es wird unrein genannt. Unreine Funktionen können nicht isoliert verwendet oder getestet werden, da sie Abhängigkeiten aufweisen.

Beispiel

int z;
function notPure(){
	z = z+10;
}

Funktionszusammensetzung

Bei der Funktionskomposition werden zwei oder mehr Funktionen zu einer neuen kombiniert.

Gemeinsame Staaten

Shared States ist ein wichtiges Konzept in der OOP-Programmierung. Im Grunde geht es darum, Objekten Eigenschaften hinzuzufügen. Wenn es sich bei einer Festplatte beispielsweise um ein Objekt handelt, können Speicherkapazität und Festplattengröße als Eigenschaften hinzugefügt werden.

Side Effects

Nebenwirkungen sind alle Zustandsänderungen, die außerhalb einer aufgerufenen Funktion auftreten. Das größte Ziel jeder FP-Programmiersprache besteht darin, Nebenwirkungen zu minimieren, indem sie vom Rest des Softwarecodes getrennt werden. Bei der FP-Programmierung ist es wichtig, Nebenwirkungen aus der restlichen Programmierlogik zu beseitigen.

Die Vorteile der funktionalen Programmierung

  • Ermöglicht Ihnen, verwirrende Probleme und Fehler im Code zu vermeiden
  • Einfacheres Testen und Ausführen von Unit-Tests und Debuggen von FP-Code.
  • Parallelverarbeitung und Parallelität
  • Hot-Code-Bereitstellung und Fehlertoleranz
  • Bietet eine bessere Modularität mit einem kürzeren Code
  • Erhöhte Produktivität des Entwicklers
  • Unterstützt verschachtelte Funktionen
  • Funktionale Konstrukte wie Lazy Map & Lists usw.
  • Ermöglicht die effektive Nutzung der Lambda-Kalküle

Einschränkungen der funktionalen Programmierung

  • Das funktionale Programmierparadigma ist nicht einfach und daher für Anfänger schwer zu verstehen
  • Schwer zu warten, da sich während der Codierung viele Objekte entwickeln
  • Erfordert viel Spott und umfangreiche Umgebungseinstellungen
  • Die Wiederverwendung ist sehr kompliziert und erfordert eine ständige Umgestaltung
  • Objekte stellen das Problem möglicherweise nicht richtig dar

Funktionale Programmierung vs. objektorientierte Programmierung

Funktionale Programmierung OOP
FP verwendet unveränderliche Daten. OOP verwendet veränderliche Daten.
Folgt dem auf deklarativer Programmierung basierenden Modell. Folgt dem imperativen Programmiermodell.
Der Schwerpunkt liegt auf: „Was Sie tun. im Programm.“ Der Schwerpunkt liegt auf „Wie Sie Ihre Programmierung durchführen“.
Unterstützt parallele Programmierung. Keine Unterstützung für parallele Programmierung.
Seine Funktionen haben keine Nebenwirkungen. Die Methode kann viele Nebenwirkungen haben.
Die Flusskontrolle wird mithilfe von Funktionsaufrufen und Funktionsaufrufen mit Rekursion durchgeführt. Der Flusskontrollprozess wird mithilfe von Schleifen und bedingten Anweisungen durchgeführt.
Die Ausführungsreihenfolge der Anweisungen ist nicht sehr wichtig. Die Ausführungsreihenfolge der Anweisungen ist wichtig.
Unterstützt sowohl „Abstraktion statt Daten“ als auch „Abstraktion statt Verhalten“. Unterstützt nur „Abstraktion über Daten“.

Schlussfolgerung

  • Funktionale Programmierung oder FP ist eine Denkweise über die Softwarekonstruktion, die auf einigen grundlegenden Definitionsprinzipien basiert
  • Bei den Konzepten der funktionalen Programmierung stehen die Ergebnisse und nicht der Prozess im Mittelpunkt.
  • Das Ziel jeder FP-Sprache besteht darin, die mathematischen Funktionen nachzuahmen
  • Einige der bekanntesten funktionalen Programmiersprachen: 1) Haskell 2) SM 3) Clojure 4) Scala 5) Erlang 6) Clean
  • Eine „reine Funktion“ ist eine Funktion, deren Eingaben als Eingaben deklariert werden und keine davon ausgeblendet werden sollte. Die Ausgänge werden auch als Ausgänge deklariert.
  • Unveränderliche Daten bedeuten, dass Sie problemlos in der Lage sein sollten, Datenstrukturen zu erstellen, anstatt bereits vorhandene zu ändern
  • Ermöglicht Ihnen, verwirrende Probleme und Fehler im Code zu vermeiden
  • Funktionscode ist nicht einfach und daher für Anfänger schwer zu verstehen
  • FP verwendet unveränderliche Daten, während OOP veränderbare Daten verwendet