Je suis développeur Web depuis un certain temps maintenant et j'ai récemment commencé à apprendre la programmation fonctionnelle. Comme d'autres, j'ai eu du mal à appliquer bon nombre de ces concepts à mon travail professionnel. Pour moi, la raison principale en est que je vois un conflit entre l'objectif de FP de rester apatride semble assez en contradiction avec le fait que la plupart des travaux de développement Web que j'ai effectués ont été fortement liés aux bases de données, qui sont très centrées sur les données.
Une chose qui a fait de moi un développeur beaucoup plus productif du côté de la POO a été la découverte de mappeurs relationnels objet comme MyGeneration d00dads pour .Net, Class :: DBI pour perl, ActiveRecord pour ruby, etc. Cela m'a permis de rester à l'écart de l'écriture, insérer et sélectionner des déclarations toute la journée, et se concentrer sur le travail avec les données facilement en tant qu'objets. Bien sûr, je pouvais toujours écrire des requêtes SQL lorsque leur puissance était nécessaire, mais sinon, c'était bien résumé dans les coulisses.
Maintenant, en ce qui concerne la programmation fonctionnelle, il semble que de nombreux frameworks Web FP tels que Links nécessitent l'écriture de beaucoup de code SQL standard, comme dans cet exemple . Weblocks semble un peu mieux, mais il semble utiliser une sorte de modèle POO pour travailler avec des données, et nécessite toujours que le code soit écrit manuellement pour chaque table de votre base de données comme dans cet exemple . Je suppose que vous utilisez une génération de code pour écrire ces fonctions de mappage, mais cela semble décidément non lisp.
(Notez que je n'ai pas regardé de très près Weblocks ou Links, je ne comprends peut-être pas comment ils sont utilisés).
La question est donc, pour les parties d'accès à la base de données (qui, à mon avis, sont assez volumineuses) d'une application Web, ou d'un autre développement nécessitant une interface avec une base de données SQL, nous semblons être obligés de suivre l'un des chemins suivants:
- N'utilisez pas de programmation fonctionnelle
- Accédez aux données d'une manière ennuyeuse et non abstraite qui implique l'écriture manuelle de beaucoup de code SQL ou de type SQL comme des liens
- Forcer notre langage fonctionnel dans un paradigme pseudo-POO, supprimant ainsi une partie de l'élégance et de la stabilité d'une véritable programmation fonctionnelle.
De toute évidence, aucune de ces options ne semble idéale. A trouvé un moyen de contourner ces problèmes? Y a-t-il vraiment un problème ici?
Remarque: Personnellement, je suis plus familier avec LISP sur le front FP, donc si vous voulez donner des exemples et connaître plusieurs langues FP, lisp serait probablement la langue préférée de choix
PS: Pour les problèmes spécifiques à d'autres aspects du développement Web, consultez cette question .