Frage

Was sind Ihrer Meinung nach die Vorteile der funktionalen Programmierung?Und wie gelten sie heute für Programmierer?

Was sind die größten Unterschiede zwischen funktionaler Programmierung und OOP?

War es hilfreich?

Lösung

Der Stil der funktionalen Programmierung ist zu beschreiben, was Sie wollen, und nicht, wie es zu bekommen. dh: stattdessen eine for-Schleife mit einer Iteratorvariable schaffen und marschieren durch eine Reihe etwas zu jeder Zelle zu tun, dann würden Sie das Äquivalent von „sagen dieses Label bezieht sich auf eine Version dieses Array, in dem diese Funktion auf alle getan wurde die Elemente. "

Funktionale Programmierung bewegt sich mehr grundlegende Programmier Ideen in den Compiler, Ideen wie Listenkomprehensionen und Caching.

Der größte Vorteil der funktionalen Programmierung ist der Kürze halber, weil Code prägnanter sein kann. Ein funktionsfähiges Programm keine Iteratorvariable schafft das Zentrum einer Schleife zu sein, so dass diese und andere Arten von Kopf werden aus dem Code entfernt.

Der andere große Vorteil ist, Parallelität, die mit der funktionalen Programmierung zu tun, weil der Compiler Pflege nimmt der meisten Operationen einfacher ist, die manuell verwendet erfordern Zustandsgrößen des Einrichtens (wie der Iterator in einer Schleife).

können einige Leistungsvorteile als auch im Rahmen eines Single-Prozessor zu sehen ist, in Abhängigkeit von der Art und Weise das Programm geschrieben wird, weil die meisten funktionalen Sprachen und Erweiterungen lazy evaluation unterstützen. In Haskell kann man sagen, „dieses Label stellt einen Array mit allen geraden Zahlen enthalten“. Ein solche Anordnung ist unendlich groß, aber man kann, ohne zu wissen, jederzeit für das 100.000ste Element dieses Arrays stellen - zum Zeitpunkt Feldinitialisierung - genau das, was der größte Wert ist, Sie brauchen werden. Der Wert wird nur berechnet werden, wenn Sie es brauchen, und nicht weiter.

Andere Tipps

Der größte Vorteil ist, dass es nicht das, was Sie gewohnt sind. Wählen Sie eine Sprache wie Scheme und lernen zu lösen Probleme mit ihm, und du wirst ein besserer Programmierer in Sprachen werden Sie bereits kennen. Es ist wie eine zweite menschliche Sprache zu lernen. Sie gehen davon aus, dass andere im Grunde eine Variation auf eigene Faust sind, weil Sie nichts haben, es zu vergleichen. Die Exposition gegenüber anderen, insbesondere diejenigen, die nicht im Zusammenhang mit sind, was Sie bereits wissen, ist lehrreich.

Ein guter Ausgangspunkt wäre daher der Versuch, einige Dinge zu verstehen, die in imperativen Sprachen nicht möglich, in funktionalen Sprachen jedoch möglich sind.

Wenn es um Berechenbarkeit geht, gibt es natürlich nichts, was in der funktionalen, aber nicht imperativen Programmierung möglich ist (oder umgekehrt).

Der Sinn verschiedener Programmierparadigmen besteht nicht darin, Dinge möglich zu machen, die vorher nicht möglich waren, sondern darin, Dinge einfach zu machen, die vorher schwierig waren.

Ziel der funktionalen Programmierung ist es, Ihnen das Schreiben präziser, fehlerfreier und parallelisierbarer Programme zu erleichtern.

Es hat nicht das eine oder das andere sein: eine Sprache wie C # 3.0 ermöglicht es Ihnen, die besten Elemente von jedem zu mischen. OO kann für die großräumige Struktur auf Klassenebene verwendet werden und oben, funktionalen Stil für die kleine Struktur auf Verfahren Ebene.

, um den Funktions Stil Mit Code geschrieben werden kann, die seine Absicht klar erklärt, ohne mit Steuerflussrechnungen vermischt werden, usw. Aufgrund der Prinzipien wie nebenwirkungsfreie Programmierung, es ist viel einfacher, über Code zur Vernunft, und überprüfen Sie die Richtigkeit.

Ich denke, die meisten praktischen Beispiel für die Notwendigkeit einer funktionalen Programmierung ist die Parallelität - funktionale Programme natürlich Thread-sicher sind und der Aufstieg der Multi-Core-Hardware gegeben dies von größter Bedeutung ist.

Funktionale Programmierung erhöht auch die Modularität - man kann oft sehen Methoden / Funktionen in zwingend notwendig, die viel zu lang sind - Sie werden so gut wie nie eine Funktion mehr als ein paar Zeilen lang sehen. Und da alles entkoppelt ist - Wiederverwendbarkeit ist sehr verbessert und Unit-Tests sind sehr, sehr einfach.

Sobald das Programm wächst, wird die Anzahl der Befehle in unserem Wortschatz zu hoch, so dass es sehr schwierig zu bedienen. Dies ist, wo die objektorientierte Programmierung unser Leben einfacher macht, weil es uns erlaubt unsere Befehle in einer besseren Art und Weise zu organisieren. Wir können alle Befehle zuordnen, die Kunden mit einiger Kundenentität beinhalten (eine Klasse), die die Beschreibung klarer viel macht. Doch das Programm ist immer noch eine Folge von Befehlen angibt, wie es sollte gehen.

Funktionale Programmierung bietet eine völlig andere Art und Weise das Vokabular zu erweitern. Nicht beschränkt auf das Hinzufügen neuer primitive Befehle; wir können auch neue Kontrollstrukturen-Primitiven hinzufügen, die angeben, wie wir Befehle zusammen, ein Programm zu erstellen, setzen können. In imperativen Sprachen konnten wir Befehle in einer Sequenz zusammenstellen oder eine begrenzte Anzahl von eingebauten Konstrukte, wie etwa Schleifen verwenden, aber wenn man sich typische Programme anschauen, werden Sie noch viele wiederkehrende Strukturen sehen; gemeinsame Wege von Befehlen kombinieren

Denken Sie nicht an der funktionalen Programmierung in Form einer „Notwendigkeit“. Stattdessen halten sie für eine andere Programmiertechnik, die Ihren Verstand wie OOP eröffnen, Vorlagen, Assemblersprache, etc haben Ihre Denkweise völlig verändert, wenn (falls) Sie sie gelernt haben. Letztlich funktionale Programmierung Lernen erhalten Sie einen besseren Programmierer machen.

Wenn Sie nicht bereits funktionale Programmierung kennen, dann lernen sie Ihnen mehr Möglichkeiten gibt, Probleme zu lösen.

FP ist eine einfache Verallgemeinerung, die für groß angelegte Strukturierung von Code-Funktionen in der ersten Klasse Werte während OOP ist fördert. Es besteht eine gewisse Überlappung jedoch, wo OOP Design Patterns vertreten können direkt und viel prägnanter erstklassige Funktionen.

Viele Sprachen bieten sowohl FP und OOP, einschließlich OCaml, C # 3.0 und F #.

Cheers, Jon Harrop.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top