Ich bin seit einiger Zeit Webentwickler und habe vor kurzem angefangen, funktionale Programmierung zu lernen. Wie andere hatte ich einige erhebliche Probleme, viele dieser Konzepte auf meine berufliche Arbeit anzuwenden. Für mich ist der Hauptgrund dafür, dass ein Konflikt zwischen dem Ziel von FP, staatenlos zu bleiben, ziemlich im Widerspruch zu der Tatsache steht, dass die meisten meiner Webentwicklungsarbeiten stark an Datenbanken gebunden waren, die sehr datenorientiert sind.
Eine Sache, die mich auf der OOP-Seite zu einem viel produktiveren Entwickler machte, war die Entdeckung objektrelationaler Mapper wie MyGeneration d00dads für .Net, Class :: DBI für Perl, ActiveRecord für Ruby usw. Dadurch konnte ich mich fernhalten vom Schreiben von Insert- und Select-Anweisungen den ganzen Tag über bis hin zum einfachen Arbeiten mit den Daten als Objekte. Natürlich konnte ich immer noch SQL-Abfragen schreiben, wenn ihre Leistung benötigt wurde, aber ansonsten wurde sie hinter den Kulissen schön abstrahiert.
Wenn wir uns nun der funktionalen Programmierung zuwenden, scheint es, als müssten bei vielen FP-Webframeworks wie Links wie in diesem Beispiel viel SQL-Code auf der Boilerplate geschrieben werden . Weblocks scheint ein wenig besser zu sein, aber es scheint eine Art OOP-Modell für die Arbeit mit Daten zu verwenden, und es muss weiterhin wie in diesem Beispiel für jede Tabelle in Ihrer Datenbank manuell Code geschrieben werden . Ich nehme an, Sie verwenden eine Codegenerierung, um diese Zuordnungsfunktionen zu schreiben, aber das scheint entschieden un-lisp-artig zu sein.
(Hinweis: Ich habe Weblocks oder Links nicht besonders genau betrachtet. Ich verstehe möglicherweise nur falsch, wie sie verwendet werden.)
Die Frage ist also, dass wir für die Datenbankzugriffsteile (von denen ich glaube, dass sie ziemlich groß sind) der Webanwendung oder für andere Entwicklungen, die eine Schnittstelle mit einer SQL-Datenbank erfordern, gezwungen sind, einen der folgenden Pfade einzuschlagen:
- Verwenden Sie keine funktionale Programmierung
- Greifen Sie auf lästige, nicht abstrahierte Weise auf Daten zu, indem Sie viel SQL oder SQL-ähnlichen Code ala Links manuell schreiben
- Erzwingen Sie unsere funktionale Sprache in ein Pseudo-OOP-Paradigma und entfernen Sie so einen Teil der Eleganz und Stabilität einer echten funktionalen Programmierung.
Natürlich scheint keine dieser Optionen ideal zu sein. Hat ein Weg gefunden, diese Probleme zu umgehen? Gibt es hier wirklich überhaupt ein Problem?
Hinweis: Ich persönlich kenne LISP im FP-Bereich am besten. Wenn Sie also Beispiele nennen und mehrere FP-Sprachen kennen möchten, ist Lisp wahrscheinlich die bevorzugte Sprache
PS: Zu Problemen, die für andere Aspekte der Webentwicklung spezifisch sind, siehe diese Frage .