J'ai été un développeur web pour un certain temps maintenant, et nous avons récemment commencé à apprendre la programmation fonctionnelle. Comme d'autres, j'ai eu quelques significative de la difficulté à appliquer plusieurs de ces concepts à mon travail. Pour moi, la principale raison pour cela est que je vois un conflit entre les entre les FP de l'objectif de rester apatrides semble tout à fait en désaccord avec le fait que la plupart de développement web que j'ai fait a été fortement liée à des bases de données, qui sont très centrées sur les données.
Une chose qui m'a fait beaucoup plus productif développeur sur la programmation orientée objet côté des choses a été la découverte de l'objet-relationnel mappeurs comme MyGeneration d00dads pour .Net, Class::DBI pour perl, ActiveRecord pour ruby, etc. Cela m'a permis de rester à l'écart de l'écriture d'insertion et de sélectionner les déclarations de tous les jours, et de se concentrer sur le travail avec les données facilement comme des objets. Bien sûr, je pourrais encore écrire des requêtes SQL lorsque leur puissance est nécessaire, mais sinon elle a été prélevée bien derrière les coulisses.
Maintenant, se tournant vers fonctionnelle de la programmation, il semble comme avec la plupart des FP frameworks web comme des Liens nécessitent l'écriture de beaucoup de passe-partout de code sql, comme dans cet exemple. Weblocks semble un peu mieux, mais il semble qu'il utilise une sorte de modèle de programmation orientée objet pour travailler avec les données, et nécessite encore de code écrit manuellement pour chaque table dans votre base de données comme dans cet exemple. Je suppose que vous utilisez certains de génération de code à écrire ces fonctions de cartographie, mais qui semble décidément onu-lisp.
(Remarque je n'ai pas regardé Weblocks ou des Liens très près, j'ai peut-être juste de l'incompréhension comment ils sont utilisés).
La question est donc, pour l'accès à la base de parties (qui, je le crois assez grand) de l'application web, ou d'autres nécessitant une interface avec une base de données sql, nous semblent être forcé vers le bas l'un des chemins suivants:
- Ne pas Utiliser la Programmation Fonctionnelle
- Accéder à des Données dans un ennuyeux, onu-abstraites manière qui implique l'écriture manuelle de beaucoup de SQL ou SQL-like code ala Liens
- La Force de notre Langage fonctionnel en une pseudo-paradigme de la programmation orientée objet, donc en enlevant une partie de l'élégance et de la stabilité de la vraie programmation fonctionnelle.
À l'évidence, aucune de ces options semblent idéales. A trouvé un moyen de contourner ces problèmes? Est-il vraiment encore un problème ici?
Note: personnellement, je suis plus familier avec le LISP sur le pc avant, donc, si vous voulez donner des exemples et de connaître de multiples FP langues, lisp serait probablement la langue officielle de leur choix
PS: Pour les Questions spécifiques à d'autres aspects du développement web, voir à cette question.