Was ist Ihre stärkste Meinung gegen funktionale Programmierung? [geschlossen]

25

Funktionale Programmierung ist eines der ältesten Programmierparadigmen. Es wird jedoch in der Industrie im Vergleich zu populäreren Paradigmen nicht viel verwendet. Aber es wurde in der Wissenschaft weitgehend betont.

Was ist Ihre stärkste Meinung gegen funktionale Programmierung?

Jonas
quelle
5
LINQ? .NET-Delegierte? DSLs wie Mathematica?
Jon Harrop
5
Im Übrigen wird der Begriff "funktionale Programmierung" von verschiedenen Personen verwendet, um verschiedene Dinge zu bezeichnen. Sie müssen also klären, welche Bedeutung Sie verwenden.
Jon Harrop
2
Sie werden auf Ihrer Funktionscode-Basis niemals jemanden finden, der Code schreiben kann. Keine gute Geschäftsentscheidung, die Ihren Talentpool einschränkt.
Patrick Hughes

Antworten:

52

Das Problem ist , dass die meist gemeinsame Code von Natur Zustand beinhaltet - Business - Anwendungen, Spiele, UI, etc. Es gibt kein Problem mit einigen Teilen einer App rein funktional zu sein; Tatsächlich könnten die meisten Apps in mindestens einem Bereich davon profitieren. Aber das Paradigma überall durchzusetzen, fühlt sich kontraintuitiv an.

Notiz an mich selbst - denke an einen Namen
quelle
19
Absolut. Reine Funktionsprogrammierung ist für sehr zustandsorientierte Anwendungen NICHT gut geeignet. Deshalb mag ich hybride Sprachen, die beides können. Verwenden Sie funktionale Paradigmen für funktionale Probleme, imperative Paradigmen für imperative Probleme.
Matt Olenik
8
Einverstanden! Staat ist ein wesentlicher Bestandteil der Programmierung. Aus diesem Grund erlaubt auch Haskell, in gewisser Weise die reinste der FP-Sprachen, die Verwendung von State und IO - es erzwingt einfach eine Unterscheidung zwischen IO-Code / veränderlichem State-Code und reinem Code, was zum Testen und zum leichteren Verständnis sehr nützlich ist .
Bill
8
Deshalb liebe ich Haskell. Es wird empfohlen, diesen statusbezogenen Code zu minimieren. In OO möchte ich wiederverwendbaren, leicht verständlichen und leicht zu testenden Code schreiben. Die meiste Zeit lande ich mit Code, den ich in Haskell nicht viel anders schreiben würde.
LennyProgrammers
4
"Es erzwingt einfach eine Unterscheidung zwischen E / A-Code / veränderlichem Statuscode und reinem Code, was sehr gut zum Testen ist." Sie können Debug-Meldungen nicht einmal drucken, ohne das Typsystem zu umgehen oder Monad Creep einzuführen.
Jon Harrop
2
Vermutlich würde ein reines Funktionsprogramm die Welt völlig unverändert lassen, wenn es ausgeführt wird?
Martin Beckett
24

Das Problem mit der funktionalen Programmierung ist nicht die funktionale Programmierung selbst - es sind die meisten Leute, die dies tun und (noch schlimmer) die meisten Leute, die Sprachen entwerfen, in denen dies getan werden soll.

Das Problem ergibt sich aus der Tatsache, dass viel zu viele der Leute, obwohl sie sehr schlau (manchmal geradezu brillant) sind, ein wenig zu fanatisch in Bezug auf Reinheit, Perfektion und die Durchsetzung ihrer eigenen (oftmals ziemlich engen) Sicht auf die Welt und das Programmieren auf die Welt sind Sprache und jeder, der sie benutzt.

Eines der Ergebnisse ist das Scheitern von Kompromissen. Dies führt (unter anderem) zu ungefähr 10.000 Sprachen und Dialekten, die unterschiedlich genug sind, um zu nerven, aber nur selten genug, um einen wirklich signifikanten Vorteil gegenüber den anderen zu haben. Viele schauen sich auch die reale Welt an und stellen fest, dass sie einfach falsch ist und am besten ignoriert wird, da sie nicht sehr gut zum Funktionsmodell passt.

Die Unfähigkeit, Kompromisse einzugehen, hat auch zu einigen Sprachen geführt, die für eine bestimmte Art von Problem (oder für einige bestimmte Arten von Problemen) absolut schön sind, aber für viele andere wirklich zum Kotzen sind . Ein Teil davon ist wahrscheinlich auf das Funktionsmodell selbst zurückzuführen, aber viel mehr scheint (zumindest für mich) auf den grundlegenden Persönlichkeitstyp zurückzuführen zu sein, der von Anfang an von diesem Bereich angezogen wird.

Das führt zu einer Reihe von Problemen. Erstens ist das Erlernen der "funktionalen Programmierung" meistens von philosophischem Wert. Bei den meisten anderen Arten von Sprachen ist die Kenntnis einer Sprache eines bestimmten Genres eine wichtige Hilfe beim Erlernen einer anderen. Wenn mein Projekt die Sprache X verwendet, kann ich normalerweise jemanden einstellen, der die Sprache Y (aber nicht X) ziemlich sicher beherrscht. Bei funktionalen Sprachen ist das viel weniger der Fall. Sie kennen Erlang vielleicht recht gut, finden aber Haskell-Monaden völlig fremd und unverständlich.

Wenn Sie die Anzahl der Sprachen mit der eingeschränkten Portabilität der Talente kombinieren, entsteht eine hässliche Situation: Es ist fast unmöglich, dass eine Sprache oder ein Dialekt die "kritische Masse" bildet, die erforderlich ist, um einen angemessenen allgemeinen Gebrauch daraus zu machen. Das ist langsam zu ändern, aber es ist immer noch eine Menge , wie Linux das dominierende Desktop - Betriebssystem immer - jedes Jahr Menschen mit überzeugenden Argumenten kommen, die schließlich das sein wird, das Jahr - und ebenso wie die Menschen , die die Vorhersage haben , dass jeder Jahr für Jahrzehnte werden sie wieder falsch liegen. Das soll nicht heißen, dass es (beides) niemals passieren kann - nur, dass die Leute, die sich die Vorhersagen ansehen und "nein, nicht in diesem Jahr" denken, die waren, die bisher Recht hatten.

Jerry Sarg
quelle
4
Vielleicht würde es mehr Überkreuzungen zwischen funktionalen Sprachen geben, wenn es mehr funktionale Sprachen gäbe.
Barry Brown
5
Ohne diese Reinheit kann man nicht "funktional" sein. Sobald Sie die Grenze überschritten haben, zerfällt das gesamte Konzept und Sie erhalten eine chaotische, parallele Standardsprache ohne die Vorteile.
Patrick Hughes
7
Ihr erstes Problem ist also, dass funktionale Sprachen nicht genug voneinander abweichen, um einen Vorteil gegenüber anderen zu haben, und Ihr zweites Problem ist, dass sie zu unterschiedlich sind, um einfach dazwischen zu wechseln?
Tikhon Jelvis
2
Für mich liest sich diese Antwort wie ein Scherz. Ihr Argument wäre viel überzeugender, wenn Sie einige Beispiele nennen würden.
Benjamin Hodgson
1
...roughly 10,000 languages and dialects that are enough different to annoy but only rarely enough different for one to have a truly significant advantage over the others...Nein, das klingt nach all diesen prozeduralen langs. Java, Scala, Kotlin, C ++, C #, Groovy, Cheddar, ES6, Ceylon, Python, die Liste geht weiter und weiter - sie alle sind nur langweilige Iterationen von C, die die eigentlichen Probleme nicht lösen. Das ist meine Meinung Ranty diese Ranty Antwort zu ergänzen: D
cat
17

Ich denke, der Grund, warum funktionale Programmierung nicht sehr verbreitet ist, liegt darin, dass sie Ihnen zu viel im Weg steht. Es ist schwer, zum Beispiel Lisp oder Haskell ernsthaft zu betrachten, ohne zu sagen, "diese ganze Sprache ist eine große Abstraktionsinversion." Wenn Sie Basisabstraktionen festlegen, unter die der Codierer bei Bedarf nicht geraten kann, legen Sie Dinge fest, die die Sprache einfach nicht kann, und je funktionaler die Sprache ist, desto mehr davon hat sie tendenziell.

Nehmen Sie zum Beispiel Haskell. Im Namen der funktionalen Reinheit müssen Sie bahnbrechende Abstraktionsinversionen verwenden, die niemand versteht, um Status und E / A zu verwalten, die beiden grundlegendsten Teile eines jeden Computerprogramms, das mit irgendetwas interagiert! Das wird schnell alt.

Mason Wheeler
quelle
9
+1, obwohl ich manchmal das gleiche empfinde, wenn ich in höheren imperativen Sprachen programmiere. Warum muss ich zum Beispiel mit fsck eine einzelne Methodenklasse erstellen, die eine einzelne Methodenschnittstelle in Java implementiert, anstatt nur einen Funktionszeiger wie in C zu verwenden?
DSIMCHA
14
Ich würde sagen, es ist nicht so, dass man diese Abstraktionen "nicht unterkriegen" kann, es ist eher so, dass es nur eine Menge Arbeit kostet. Wir sind es gewohnt, eine Banane zu nehmen und sie in einer Gebotssprache zu essen. Haskell (zum Beispiel) lässt Sie zuerst ein 20-seitiges Formular ausfüllen, weil es die Priorität hat, sicherzustellen, dass keine Banane jemals auf mysteriöse Weise gegessen wird, wenn Sie nicht hinsehen. Das hilft, wenn man über Bananen nachdenkt, aber manchmal hat man nur Hunger.
j_random_hacker
4
@dsimcha: Dies ist eher eine Besonderheit von Java als ein Trend in imperativen Hochsprachen. In der Tat haben Hochsprachen wahrscheinlich eher die Funktion eines erstklassigen Objekts.
Muhammad Alkarouri
3
Die Notwendigkeit für Monaden in Haskell beruht nicht auf funktionaler Reinheit, sondern auf der Tatsache, dass Nebenwirkungen und verzögerte Bewertung zwei großartige Geschmacksrichtungen sind, die zusammen NICHT großartig schmecken. Monaden erzwingen eine sequenzielle Auswertung. (Eigentlich sollten sie Computation Builders oder so heißen. 'Monad' ist ein mieser Name für jeden anderen als einen Kategorietheoretiker.) Und Sie können FP auch gerne ohne (wissentlich verwendete) Monaden machen!
Frank Shearar
4
Eines ist zu beachten: Angesichts dieser "Abstraktionsinversionen" ist die Sprache möglicherweise eingeschränkter, aber der Compiler und die Laufzeit haben mehr Garantien für Ihren Code und können mehr. Das ist genau wie bei der Garbage Collection - in einer gc-Sprache kann man nicht nur Speicherplatz malloc (was nützlich sein könnte), sondern im Gegenzug kann die Laufzeit all Ihren Speicher für Sie verwalten, möglicherweise effizienter als Sie es manuell könnten. Dasselbe gilt für die funktionale Reinheit.
Tikhon Jelvis
8

Bei allem Respekt denke ich, dass Ihre Frage schlecht gestellt ist. Funktionale Programmierung ist ein Werkzeug oder vielmehr eine Reihe von Werkzeugen, die zur Lösung bestimmter Arten von Problemen nützlich sind. Eine Meinung dazu zu haben, ist nur im Zusammenhang mit einem bestimmten Problem oder einer bestimmten Anwendung sinnvoll. Eine Meinung dagegen zu haben ist wie eine Meinung gegen Zangen oder Schraubenschlüssel.

Dima
quelle
4
Dies ist ein logisch gültiger Punkt, der jedoch behoben werden kann, indem der letzte Satz der OP-Frage "für die Art von Programmierproblemen, auf die Sie häufig stoßen" angeführt wird. (Es spielt keine Rolle, dass einzelne Leser auf unterschiedliche Probleme stoßen, vorausgesetzt, sie beschreiben, was sie sind.)
j_random_hacker
4

Selbst wenn ich es gemeistert hätte, wäre ich möglicherweise nicht geneigt, eine funktionale Sprache für ein kommerzielles Produkt zu verwenden, weil sie nicht allgemein verstanden wird. Wenn ich ein Wachstum des Geschäfts erwarten würde, wäre ich besorgt, andere Entwickler zu finden, die dazu in der Lage sind zu pflegen oder im Laufe der Zeit zu erweitern.

Es ist nicht unvorstellbar, und Sie würden wahrscheinlich einen höheren Entwicklerstandard erhalten, da ein Java-Student ohne echte Hacking-Kenntnisse nicht wissen würde, wo er mit einem Projekt dieser Art beginnen soll, aber der begrenzte Pool an fähigen Entwicklern wäre sicherlich eine notwendige Überlegung aus betriebswirtschaftlicher Sicht.

Glenatron
quelle
2

Zeit zum Markt

Es ist schwierig, eine vollständige IT-Landschaft von Verfahrenscode und Mantras zu befreien.

Jé Queue
quelle
1
Funktionsprogramme sind oft einfacher zu testen. Und sie sind kürzer. Also nicht einverstanden. Ich denke, Sie beantworten eine andere Frage: "Was ist Ihre stärkste Meinung gegen die Umstellung auf funktionale Programmierung?".
Jonas
2

zuallererst akzeptiere ich keines der argumente bezüglich state-ful programming und fp. Wenn Sie sich die staatliche Monade in Haskell ansehen, werden Sie eine Reihe interessanter neuer Möglichkeiten finden, um die Auswirkung des Staates auf Ihren Code zu bewerten.

wenn ich ein aussagekräftiges argument gegen fp machen würde, wäre es, dass das lernen einer seriösen funktionalen sprache wie haskell wie das lernen, ein formelauto zu fahren ... aufregend und lehrreich, aber leider nutzlos für die alltägliche industrielle codierung, weil im durchschnitt Ihre Mitarbeiter fahren Kamera und sind sehr froh, dies zu tun. es ist immer noch extrem schwierig, arbeit in einem fp-freundlichen umfeld zu finden, und ich sehe das nicht anders, wenn man nicht bereit ist, selbst zuzuschlagen oder einige der bekannten fp-praktiker aufzusuchen.

ich nehme an, meine antwort zeigt mich als fp fanboy. ich schlage vor, einer echten fp-sprache wie haskell eine ernste drehung zu geben, bevor ich mir überlege, warum du das nicht tun solltest.

Brad Clawsie
quelle
6
Ich denke, Ihr erster Absatz beschreibt genau, was an der FP-Denkweise falsch ist. Wir haben keine wollen „interessante neue Möglichkeiten , um die Auswirkungen des Staates auf unseren Code zu beurteilen.“ Was bedeutet das überhaupt?!? Wir wollen nur, dass der Staat da ist und leicht zugänglich ist, weil wir ihn brauchen, um die Dinge tatsächlich zu erledigen.
Mason Wheeler
2
Der Camry, den ich fahre, hat seine Probleme, aber ich muss nicht ständig unter der Motorhaube nach Lecks suchen . Haskell ähnelt eher einer Sprache, die wie ein F1-Auto aussieht , kann aber über einen längeren Zeitraum keine hohen Drehzahlen erreichen. :-P
j_random_hacker
1
@Mason Wheeler: "Wir wollen keine interessanten neuen Methoden, um die Auswirkung des Zustands auf unseren Code zu bewerten." Stattdessen ziehen wir es vor, eine Woche damit zu verbringen, einen sehr bösen Fehler aufgrund einer unerwünschten Nebenwirkung aufzuspüren (ich spreche aus persönlicher Erfahrung).
Giorgio
@brad clawsie: Ich denke, dass das gesamte Problem der Kontrolle von Nebenwirkungen in FP dazu beitragen kann, das Codieren viel produktiver zu machen: Das Schreiben dauert länger, die Reparatur dauert jedoch kürzer. Leider muss man sich erst einmal einiges anstrengen, und viele Programmierer haben nicht das Langzeitdenken: Die Dinge müssen schnell erledigt werden. Es ist keine Zeit, dies beim ersten Mal richtig zu machen, aber es ist immer Zeit, es später zu debuggen und zu beheben. :-)
Giorgio
@Mason Wheeler: Aus funktionaler Sicht ist ein gemeinsam genutzter Status nur zu Optimierungszwecken hilfreich: Das Kopieren von Werten nimmt zu viel Zeit und Speicher in Anspruch, sodass Sie ein Datenobjekt gemeinsam nutzen, um unnötiges Kopieren zu vermeiden. Die Durchsetzung eines gemeinsamen Zustands von Anfang an ist jedoch eine Art vorzeitige Optimierung.
Giorgio
2

Ich bin ein großer Fan und Verfechter der funktionalen Programmierung. Aber hier sind meine Punkte:

  • einfach zu lernen
    Programmiersprachen wie Python und Ruby (und viele andere Sprachen) sind einfach zu lernen. Fortgeschrittene funktionale Programmierung mit Sprachen wie Haskell, Agda, Coq, ATS usw. ist ziemlich schwer zu lernen. Einige verwenden den Begriff "mathematisch strukturierte Programmierung". Es ist einfach, wenn Sie mit Kategorietheorie und abstrakter Mathematik vertraut sind, aber einige Arbeiten, wenn Sie keine Ahnung haben, was zum Beispiel "Monaden" sind.

  • Programmieren mit einer Skriptsprache kann zu mehr Produktivität führen.
    In einigen Situationen kann die Verwendung von Skriptsprachen wie Python und Ruby zu mehr Produktivität führen. Dies bedeutet schnelles Prototyping und Zusammenkleben verschiedener Pakete oder Bibliotheken. Auch die Verwendung dynamischer Sprachen (zB dynamische objektorientierte Programmierung) kann in diesem Zusammenhang von Vorteil sein. In der Regel ist statisches Schreiben besser, aber das Schreiben mit dynamischen Typen kann sich positiv auswirken.

  • Geschäftliche Überlegungen
    Programmierung ist nur eine kleine Auswahl erfolgreicher Softwareprojekte. Software muss funktionieren, Benutzer müssen glücklich sein und das hängt nicht unbedingt von der verwendeten Programmiersprache ab. Manager müssen bei der Bewertung neuer Technologien und Programmiersprachen die Vorteile und Risiken berücksichtigen. Können neue Programmierer die neue Programmiersprache schnell erlernen? Hat das Unternehmen Erfahrung mit der Technologie? Gibt es ein Risiko und ist dies mit dem oberen Management nur schwer zu diskutieren?

Im geschäftlichen Kontext kann die funktionale Programmierung in Systemen verwendet werden, die die Kernsoftwarekomponenten ergänzen, z. B. Komponenten, die nicht so geschäftskritisch sind. Zum Beispiel eine Bank, die die Kernsoftware kaum ändert, aber neue Teile (GUI, Überwachungssoftware usw.) in einer neuen Programmiersprache hinzufügt. (Vielleicht gibt es Ausnahmen, aber das ist meine Erfahrung mit Banken.)

Darüber hinaus ist die funktionale Programmierung sehr nützlich, wenn eine formale Verifizierung ein Vorteil oder ein Muss ist.

mrsteve
quelle
3
"easy to learn": Ich finde es nicht schwieriger, Haskell zu beherrschen, als modernes C ++ zu beherrschen. Ich denke, wir neigen dazu, uns schwer darüber Gedanken zu machen, mit was wir nicht vertraut sind.
Giorgio
1

Ich bin nicht gegen FP als nützliches Paradigma, aber ich bin dagegen als das einzige Paradigma, das in einer Programmiersprache verfügbar ist.

Es bietet Vorteile bei der Lösung vieler Probleme. FP kann und wurde jedoch in Verfahrenssprachen wie C angewendet.

Huperniketes
quelle
Stimme dem ersten Satz zu, stimme dem zweiten nicht zu. Ohne Garbage Collection ist FP grundsätzlich nicht möglich.
Dsimcha
Es ist nicht erforderlich, dass das Laufzeitsystem einer Sprache nicht über eine transparente Speicherverwaltung (mit Garbage Collection) verfügt, um auf das "prozedurale" Etikett zu passen. Daher ist es ironisch, dass Sie Ihren zweiten Satz so formuliert haben. BASIC ist eine solche Sprache.
Huperniketes
"Ohne Garbage Collection ist FP im Grunde nicht möglich." - Warum?
quant_dev
+1 Funktionale Programmierung auf der grundlegendsten Ebene ist zustandslose Programmierung. Ich glaube nicht , es gibt jede Sprache , die nicht , kann dies zu einem gewissen Grad tun. Ich habe Funktionen in C, C ++, Java, Assembly, C # und sogar Basic geschrieben. Es ist lediglich erforderlich, dass die Funktion keine Nebenwirkungen hat oder den Status zwischen den Aufrufen beibehält.
Michael K
Wenn Ihre Sprache hingegen vollständig rein ist, hat der Compiler mehr Optimierungsspielraum. Außerdem wird der Code einfacher zu testen und zu begründen. Durchgehend funktional zu sein, bietet einige Vorteile gegenüber einem hybriden Ansatz. Wenn der Großteil Ihres Codes ohnehin zustandslos sein soll, können Sie auch ein wenig weiter gehen und die zusätzlichen Vorteile nutzen.
Tikhon Jelvis
1
  1. (und bei weitem das Wichtigste) Die Belegschaft des Programmierers ist nicht in diesen Sprachen oder Stilen geschult
  2. Viele der funktionalen Evangelisten kommen als A-Holes oder Obstkuchen heraus, weil sie versuchen, funktional zu verkaufen. Niemand mag ein Loch, und niemand wird Geld hinter einen Obstkuchen werfen. Wohlgemerkt, ich mag die funktionalen Dinge wirklich und würde sie gerne anwenden, aber ich weiß, dass ich an meinem Arbeitsplatz die einzige Person sein würde, die sie entwickeln könnte, ohne Geld für Schulungen auszugeben (harter Verkauf), und fast alles Gute Hinweise beim Leser aufrütteln.

Funktionsfähig wird es sein, wenn wir Hunderte von Kernen haben und feststellen, dass Sperren nicht skalierbar sind. Dann sind parallel geschachtelte Daten der einzige Weg, um "große Eisen" -Programme zu entwickeln, und dies mit herausragenden Funktionen.

anon
quelle
0

FP ist cool in der Wissenschaft, weil es cool ist, nette Kurzprogramme zu schreiben und dabei die Leistung zu ignorieren. In der realen Welt gibt es keine Verschwörung dagegen. Auch das Implementieren einiger Dinge (zum Beispiel der Radix-Sortierung) scheint wie totaler Schmerz in der FP. Oh und generierter Code ist IMHExperience slooooooooooooooooow.

NoSenseEtAl
quelle
4
Ja, das stimmt einfach nicht. Haskell-Code ist normalerweise mit C und Java vergleichbar und viel schneller als Python und andere. Es ist normalerweise auch trivial zu parallelisieren, was möglicherweise noch mehr Geschwindigkeit bringt.
Tikhon Jelvis
0

Einige haben eine ziemlich steile Lernkurve, die viel Zeit in Anspruch nimmt (vor allem, wenn Sie von OOP kommen; Sie werden ein paar Mal den Kopf zerbrechen, bevor Sie den Paradigmenwechsel erleben).

Obwohl ich angefangen habe, funktionale Programmierung zu bekommen (von Java kommend und zu Clojure gehend), finde ich es immer noch ziemlich schwierig. Die Community scheint keinen so aussagekräftigen Code wie Java zu schreiben.

Es scheint, als gäbe es einen kleinen Verlust an Ausdruckskraft und eine kleine Zunahme an Komplexität.

Belun
quelle
Ich denke, dass Leute ohne vorherige Programmiererfahrung sagen würden, dass OOP eine steilere Lernkurve hat als FP, da FP näher an Mathe liegt. Ich verstehe nicht, was Sie mit "Die Community scheint keinen so aussagekräftigen Code wie Java zu schreiben" meinen. Worum geht es Ihnen?
Jonas
Ich habe noch nie gehört, dass funktionale Sprache an Ausdruckskraft verliert. Aber dann habe ich auch nie eine weniger ausdrucksstarke Sprache als Java verwendet, sodass ich möglicherweise eine andere Definition von "ausdrucksstark" habe.
Glenatron
@Jonas - wegen einer einfachen Sache: Abkürzung von Namen für Funktionen, Variablen usw. Ich meine, warum benennen Sie nicht einfach Dinge für das, was sie sind oder tun sollen? Warum "pmap"?
Belun
1
@Belun: Das hat nichts mit funktionaler Programmierung zu tun. Sie müssen sich auf eine bestimmte Programmiersprache beziehen. Map ist eine in vielen funktionalen Programmiersprachen verbreitete Funktion und hat einen guten Namen . pmapSie beziehen sich möglicherweise auf eine Parallelvariante.
Jonas
ich sagte "die gemeinschaft scheint nicht zu schreiben". es bedeutet, dass es das ist, was ich erlebt habe und es bezieht sich auf die Community, die ich gesehen habe. es muss nicht für alle gelten, obwohl ich es bezweifle. es hat mit der funktionalen Programmierung zu tun, es ist wie sein Stil
Belun
0

Obwohl ich wenig Erfahrung mit funktionalen Programmiersprachen habe (ich kenne einige Haskell- und Lisp-Sprachen), finde ich das FP-Paradigma sehr mächtig und oft eleganter als andere Paradigmen. Ich wünschte, ich hätte die Gelegenheit, mit FP an einem ernsthaften Projekt zu arbeiten.

Der einzige Bereich, in dem ich ernsthafte Zweifel an der Wirksamkeit von FP habe, ist der Umgang mit komplexen Datenstrukturen, die nicht induktiv definiert werden können, z. B. Grafiken. Wenn ich zum Beispiel einen Algorithmus implementieren muss, der an einem großen Graphen arbeitet, möglicherweise den Graphen durchläuft und kleine lokale Änderungen vornimmt, frage ich mich, ob ein FP-Ansatz einem imperativen Ansatz entsprechen kann, bei dem das Programm vom Knoten zum Knoten wechseln darf Knoten mit Zeigern.

Giorgio
quelle