Funktionelle Programmiermerkmale, Beispiele, Vorteile, Nachteile

Funktionelle Programmiermerkmale, Beispiele, Vorteile, Nachteile

Der Funktionelle Programmierung Es entspricht dem Programmiermuster, das auf dem Konzept basiert, das Verfahren eines Programms als mathematisches Funktionsmodell anzugeben, anstatt als explizite Anweisungssequenzen für einen Prozessor, das das Hauptkonzept in der imperativen Programmierung ist.

Funktionelle Sprache betont Sätze und Begriffe, anstatt Anweisungen auszuführen. In diesem Programm hängt das Ergebnis nur von den Parametern ab, die an eine Funktion übergeben werden, im Gegensatz zu anderen Typen, die einem lokalen oder globalen Staat gehorchen.

Wie funktioniert die Mapping -Funktion in der funktionellen Programmiersprache von Haskell?. Quelle: von Pluke - eigener Arbeit, CC0 Commons.Wikimedia.Org.

Der Name stammt aus mathematischen Funktionen, die die Zuweisung einer Reihe von Einträgen auf eine Reihe von Ausgängen sind. Eine mathematische Funktion funktioniert wirklich nicht, sondern beschreibt das Modell eines Prozesses und erklärt durch eine Formel, was eine Reihe von Einträgen in einer Funktion erzeugt.

[TOC]

Grundlegende Ideen

Die Grundlage, auf der die funktionelle Programmierung basierte. Lisp war die erste Programmiersprache dieses Typs, die 1960 entworfen wurde.

Obwohl die meisten Programmiersprachen aus externen Einträgen, Ausgängen und Variablen bestehen, die aus Funktionen konfiguriert oder verwendet werden können, verhindert die funktionale Programmierung es. Die Idee ist, dass jedes Mal, wenn eine Funktion mit den gleichen Parametern aufgerufen wird, denselben Wert zurückgeben muss.

Eigenschaften

Funktionelle Programmiersprachen werden als Anwendungen bezeichnet, da die Funktionen für ihre Parameter zusätzlich zu deklarativ und nicht procedural gelten, da die Definitionen angeben, was Sie berechnen möchten und nicht wie sie berechnet werden möchten.

Reine Funktionen

Eine Funktion ist rein, wenn sie keine beobachtbaren Nebenwirkungen aufweist, wie z. B. Änderungen externer Variablen, Änderungen im Dateisystem usw.

Diese Funktionen gelten als überzeugend, da sie keine Variable ausdrücklich ändern, von denen andere Teile des Codes zu einem bestimmten Zeitpunkt abhängen können. Es erscheint unangenehm, mit diesen Einschränkungen zu kodifizieren, aber es sollte berücksichtigt werden, dass diese Funktionen deterministisch, vorhersehbar und Komponierbar sind.

Erstklassige Funktionen

Die Funktionen werden als Werte angesehen, die Variablen zugeordnet werden können, damit sie sie an andere Funktionen übergeben und von anderen Funktionen zurückkehren können. Das heißt, eine Funktion kann verwendet werden, als wäre es ein Parameter oder ein Wert, der zurückgegeben wird.

Dies impliziert, dass die Funktion als solche übertragen werden kann, anstatt nur das Ergebnis der Funktion. Betrachten Sie beispielsweise die doppelte (x) -Funktion, die den doppelten Wert des Eingabeparameters zurückgibt. Somit würde Doppel (2) 4 zurückkehren.

Es kann Ihnen dienen: Entwicklung der industriellen Wartung: Von der Herkunft bis zur Gegenwart

Wie eine erstklassige Funktion ist der Code (Doppel (Doppel (2)) mit dem Doppelcode (4) übereinstimmend. Dies ermöglicht es, eine Funktion als Parameter eines anderen usw. zu nisten.

Referenztransparenz

Es bezieht sich auf die Tatsache, dass in diesem Programmiermuster keine Zuordnungssätze vorhanden sind. Das heißt, neue Variablen sollten definiert werden, wenn zusätzliche Werte gewünscht werden. Daher ist der Zustand einer Variablen jederzeit konstant.

Dadurch werden die geringste Möglichkeit unerwünschter Effekte beseitigt, da jede Variable durch ihren tatsächlichen Wert während jeder Programmausführung ersetzt werden kann.

Rekursion

In der funktionalen Programmierung gibt es keine Schleifen "und" while. Stattdessen hängt die Iteration von der Rekursion ab. Rekursion wird mit rekursiven Funktionen implementiert, die sich wiederholt bezeichnen, bis der Basisfall erreicht ist.

Unveränderlichkeit

Die Variablen sind unveränderlich, dh es ist nicht möglich, eine Variable zu ändern, sobald sie initialisiert wurde. Obwohl eine neue Variable erstellt werden kann, sind die vorhandenen Variablen nicht zulässig.

Beispiele

Imperative und deklarative Ansätze

Mit einem Beispiel kann der Unterschied zwischen diesen Ansätzen analysiert werden, wobei der gleiche Betrieb in beiden Bestimmungen durchgeführt wird, bei der die ungerade Zahlen einer Liste gefiltert werden soll, während die Zahlen kleiner als 5 durch 5 ersetzt werden.

Es ist die gleiche Berechnung mit dem gleichen Ergebnis. Wie zu sehen ist, ist der imperative Code jedoch detailliert und nicht sofort klar. Andererseits ist der deklarative Ansatz lesbar und explizit, da er sich auf das konzentriert, was Sie erhalten möchten.

Reine Funktionen

Sie können klarstellen, was als reine und unreine Funktionen definiert ist, mit einigen grundlegenden Beispielen:

Funktionen wie erstklassige Objekte

Bedeutet, Funktionen auf die gleiche Weise zu verwenden, wie Daten verwendet werden. Daher können sie als Parameter an eine andere Funktion übergeben. Im folgenden Beispiel können Sie die Int -Funktion als Parameter an die Kartenfunktion übergeben:

>>> list (map (int, ["1", "2", "3"]))

[1, 2, 3]

Sie können Variablen zugeordnet werden und geben sie zurück. Beispielsweise kann dem folgenden Code die Funktion Hello_world zugewiesen und dann die Variable als Funktion ausführen.

Vorteile

- Konzentrieren Sie sich auf das, was Sie erreichen möchten (deklarativ) und nicht, wie Sie es erreichen können (imperativ).

- Sie enthalten keine Zuordnungssätze, sodass sich die Variablen nach einem Wert nicht mehr ändern werden. Daher enthalten Funktionsprogramme keine Nebenwirkungen.

Kann Ihnen dienen: technologische Katastrophen

- Der logische Fluss ist klar, da der Zustand weniger verteilt ist und nicht implizit modifiziert ist.

- Gibt das Konzept der aufgeschobenen Bewertung zu, was bedeutet, dass der Wert nur bei Bedarf bewertet und gespeichert wird.

- Da reine Funktionen keinen Zustand ändern und vollständig vom Eingang abhängen, sind sie leicht zu verstehen. Der Rückgabewert, der durch solche Funktionen angegeben ist.

- Aufgrund der Art der reinen Funktionen zur Verhinderung der Variablen oder der Änderung externer Daten wird die Implementierung der Übereinstimmung wirksam.

- Funktionen werden als Werte behandelt, die zu anderen Funktionen wie Parametern übergehen. Dies verbessert das Verständnis und die Lesbarkeit des Codes.

- Die reinen Funktionen nehmen die Parameter einmal ein und erzeugen einen unveränderlichen Ausgang. Durch die Verwendung von unveränderlichen Werten werden Reinigung und Tests erleichtert.

Kürzer und einfacher zu verstehen

Sie sind kürzer und leichter zu verstehen als Imperative. Studien haben gezeigt, dass die durchschnittliche Programmiererproduktivität in Bezug auf Codezeilen für jede Programmiersprache mehr oder weniger gleich ist, was eine größere Produktivität übersetzt.

Kein Kontrollfluss

Wenn Sie eine Funktion aufrufen, können Sie keinen anderen Effekt haben als die Berechnung seines Ergebniss. Dies schließt eine wichtige Quelle für Fehler aus, die auch die Ausführungsreihenfolge irrelevant macht, da kein Nebeneffekt den Wert eines Ausdrucks verändern kann und jederzeit bewertet werden kann.

Der Programmierer wird von der Last der Einrichtung eines Steuerflusses beschwichtigt. Da Ausdrücke jederzeit bewertet werden können, können Variablen durch ihre Werte ersetzt werden.

Diese Autonomie bevorzugt, dass funktionale Programme mathematischer besser überschaubar sind als herkömmliche Programme.

Nachteile

- Das funktionale Programmierparadigma ist nicht einfach, daher wird es für einen Anfänger schwierig zu verstehen.

- Es ist schwer zu bewältigen, da sich während der Codierung viele Objekte weiterentwickeln.

- In einigen Fällen wird beim Schreiben reiner Funktionen eine Verringerung der Lesbarkeit des Codes verursacht.

- Unveränderliche Werte in Kombination mit Rekursion können zu einer drastischen Verringerung der Systemleistung führen.

- Die Wiederverwendung ist sehr kompliziert und erfordert eine konstante Refaktorisierung.

- Das Schreiben von Programmen mit einem rekursiven Stil, anstatt Krawatten oder Schleifen zu verwenden, kann eine sehr entmutigende Aufgabe sein.

- Objekte stellen das Problem möglicherweise nicht richtig dar.

Es kann Ihnen dienen: 50 empfohlene Videospielblogs

- Obwohl das Schreiben reine Funktionen als einfach herausstellt, ist es ziemlich schwierig, sie mit dem Rest der Anwendung und mit Eingangs-/Ausgangsvorgängen zu kombinieren

Anwendungen

Künstliche Intelligenzprogramm wird in funktionalen Programmiersprachen durchgeführt und künstliche Intelligenztechniken migrieren auf reale Anwendungen.

Fällt auch bei der Implementierung komplexer mathematischer Modelle auf. Aus diesem Grund war eine der Hauptnutzungen funktionaler Sprachen traditionell akademisch. Es ist nützlich, um ausführbare Spezifikationen und Prototyp -Implementierungen zu entwickeln.

Viele funktionale Sprachen sind sich ebenfalls ab, um parallele Verarbeitung zu implementieren. Dies liegt an seiner Fähigkeit, reine Funktionen zu nutzen, die immer den gleichen Wert zurückgeben, unabhängig von der Reihenfolge, in der sie ausgeführt werden.

Funktionsmethode

WhatsApp verwendet die ERLAG -Programmiersprache, die dem funktionalen Programmiermodell folgt, sodass mehr als einhundert ihrer Mitarbeiter die Daten zu ungefähr 1 behandeln können.600 Millionen Menschen.

Ein weiterer wichtiger Träger des funktionalen Programmierstils ist Haskell. Es wird von Facebook in Ihrem Antispam -System verwendet. Sogar JavaScript, eine der am häufigsten verwendeten Programmiersprachen, verfügt über die Eigenschaften einer dynamischen Funktionssprache.

Sprachen, die die funktionale Programmierung unterstützen

D

Es wurde nach C ++ entworfen, wobei alle seine Vorteile erhalten wurden und gleichzeitig seine Schwächen beseitigen, die dafür beobachtet wurden, dass sie mit C kompatibel sein mussten.

Erlang

Es ist sehr skalierbar und gleichzeitig und macht es ideal für Telekommunikation und andere Anwendungen, die massive Datenmengen in einer unvorhersehbaren Reihenfolge erhalten.

Haskell

Dies ist eine reine funktionale Programmiersprache, die die Lambda -Berechnung dafür verwendet.

Ml

Es wird in mathematischen, wissenschaftlichen, finanziellen, analytischen und anderen Arten anderer Arten verwendet. Eine seiner Stärken besteht darin, Software für andere Programme zu erstellen.

Objektives CAML

Es ist eine Open -Source -Sprache, die auf CAML basiert. Es erstellt sehr leichte Programme und hilft ihnen, schneller geladen und ausgeführt zu werden als die von anderen Sprachen erstellten.

Planen

Es basiert auf der Lisp -Syntax und der Algolstruktur. Dank seiner Einfachheit wird es in vielen Computerkursen als Einführung in die Gestaltung von Programmen verwendet, um einige der Grundlagen der Computerprogrammierung anzuzeigen.

Verweise

  1. WHHO veranstaltet dies (2019). Lernen Sie funktionale Programmierung. Genommen von: whoisostingthis.com.
  2. Andrea Bertoli (2019). Eine angemessene Einführung in das funktionale Programmmmm. Genommen von: Dev.Zu.
  3. Hacker Erde (2020). Funktionelle Programmierung. Genommen von: hakereph.com.
  4. Clojure (2020). Funktionelle Programmierung. Ausgenommen von: Clojure.Org.
  5. Akhil Bhadwal (2020). Funktionelle Programmierung: Konzepte, Abenteuer, Nachteile und Anwendungen. Hackr. Genommen von: hackr.Io.
  6. Guru99 (2020). Was ist funktionale Programmierung? Mit Beispiel -Tutorial. Entnommen aus: Guru99.com.