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โ€œ.

Fazit

  • 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

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: