He sido desarrollador web durante algún tiempo y recientemente comencé a aprender algo de programación funcional. Como otros, he tenido algunos problemas importantes para aplicar muchos de estos conceptos a mi trabajo profesional. Para mí, la razón principal de esto es que veo que un conflicto entre el objetivo de FP de permanecer apátrida parece estar en desacuerdo con el hecho de que la mayoría del trabajo de desarrollo web que he realizado ha estado fuertemente vinculado a las bases de datos, que están muy centradas en los datos.
Una cosa que me hizo un desarrollador mucho más productivo en el lado de OOP fue el descubrimiento de mapeadores relacionales de objetos como MyGeneration d00dads para .Net, Class :: DBI para perl, ActiveRecord para ruby, etc. Esto me permitió mantenerme alejado desde escribir declaraciones de inserción y selección todo el día, y enfocarse en trabajar con los datos fácilmente como objetos. Por supuesto, aún podía escribir consultas SQL cuando se necesitaba su poder, pero de lo contrario se resumía muy bien detrás de escena.
Ahora, volviendo a la programación funcional, parece que con muchos de los marcos web FP como Links requieren escribir mucho código sql repetitivo, como en este ejemplo . Weblocks parece un poco mejor, pero parece usar una especie de modelo OOP para trabajar con datos, y aún requiere que el código se escriba manualmente para cada tabla en su base de datos como en este ejemplo . Supongo que usas algo de generación de código para escribir estas funciones de mapeo, pero eso parece decididamente poco parecido.
(Tenga en cuenta que no he mirado los Weblocks o los enlaces con mucha atención, puede que no esté entendiendo cómo se usan).
Entonces, la pregunta es, para las porciones de acceso a la base de datos (que creo que son bastante grandes) de la aplicación web u otro desarrollo que requiere una interfaz con una base de datos sql, parece que nos vemos obligados a seguir una de las siguientes rutas:
- No use programación funcional
- Acceda a los datos de una manera molesta y sin abstracción que implica escribir manualmente una gran cantidad de código SQL o similar a SQL ala Enlaces
- Fuerce nuestro lenguaje funcional en un paradigma pseudo-OOP, eliminando así algo de la elegancia y la estabilidad de la verdadera programación funcional.
Claramente, ninguna de estas opciones parece ideal. ¿Ha encontrado una manera de sortear estos problemas? ¿Existe realmente un problema aquí?
Nota: Personalmente, estoy más familiarizado con LISP en el frente de FP, por lo que si desea dar algunos ejemplos y conocer varios idiomas de FP, es probable que lisp sea el idioma preferido de elección
PD: Para problemas específicos de otros aspectos del desarrollo web, vea esta pregunta .