Sou desenvolvedor web há algum tempo e recentemente comecei a aprender programação funcional. Como outros, tive alguns problemas significativos ao aplicar muitos desses conceitos ao meu trabalho profissional. Para mim, a principal razão para isso é que vejo um conflito entre o objetivo da FP de permanecer apátrida parece bastante em desacordo com o fato de que a maioria dos trabalhos de desenvolvimento da Web que eu fiz foi fortemente vinculada a bancos de dados, que são muito centrados em dados.
Uma coisa que me tornou um desenvolvedor muito mais produtivo foi a descoberta de mapeadores de objetos relacionais, como MyGeneration d00dads para .Net, Class :: DBI para perl, ActiveRecord para ruby, etc. Isso me permitiu ficar longe desde escrever, inserir e selecionar instruções o dia todo, e concentrar-se em trabalhar com os dados facilmente como objetos. Obviamente, eu ainda poderia escrever consultas SQL quando a energia delas fosse necessária, mas, caso contrário, ela seria bem resumida nos bastidores.
Agora, voltando-se para a programação funcional, parece que em muitas estruturas da Web FP, como o Links, é necessário escrever muito código sql padrão, como neste exemplo . Weblocks parece um pouco melhor, mas parece usar um tipo de modelo OOP para trabalhar com dados e ainda exige que o código seja escrito manualmente para cada tabela em seu banco de dados, como neste exemplo . Suponho que você use alguma geração de código para escrever essas funções de mapeamento, mas isso parece decididamente não-cibernético.
(Observe que não observei os Weblocks ou Links com muita atenção; talvez eu esteja entendendo mal como eles são usados).
Portanto, a pergunta é: para as partes de acesso ao banco de dados (que eu acredito que são muito grandes) do aplicativo Web ou outro desenvolvimento que requer interface com um banco de dados sql, parecemos ser forçados a seguir um dos seguintes caminhos:
- Não use programação funcional
- Acessar dados de uma maneira irritante e sem abstração, que envolve escrever manualmente muitos códigos SQL ou semelhantes a SQL
- Force a nossa linguagem funcional a um paradigma de pseudo-POO, removendo assim um pouco da elegância e estabilidade da verdadeira programação funcional.
Claramente, nenhuma dessas opções parece ideal. Encontrou uma maneira de contornar esses problemas? Existe mesmo um problema aqui?
Nota: Pessoalmente, eu estou mais familiarizado com o LISP na parte frontal do FP, portanto, se você quiser dar exemplos e conhecer vários idiomas FP, o lisp provavelmente será o idioma preferido
PS: Para questões específicas para outros aspectos do desenvolvimento da Web, consulte esta pergunta .