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
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

