Por que a Programação Funcional

38

Qual é o problema da programação funcional? Eu vejo muitas conversas sobre isso, mas para ser sincero, nunca as achei úteis. Por que tantas universidades aparentemente as ensinam?


fonte
6
Muito grande na programação de IA.
água
3
@aqua - isso não deveria ser uma resposta, por que não?
Martin Beckett
5
Eu também gostaria de salientar que mesmo as linguagens OO tradicionais estão começando a incluir conceitos da programação funcional. Linq (em .NET), sendo um exemplo disso.
apoorv020
Eu acho que a programação funcional exercita mais o seu cérebro e pode levar a um código realmente conciso. Então é bem legal.
Adel
2
@ apoorv020: E genéricos, tuplas e coleta de lixo e ... todos originados em linguagens funcionais.
Jon Harrop

Respostas:

60

Comece com Por que a programação funcional é importante . Em seguida, vá para Por que a programação de funções é importante ? Algumas balas:

  • A programação funcional permite que você pense sobre problemas de maneira diferente
  • A abstração funcional é muito poderosa e permite secar seu código de maneiras não disponíveis para outros paradigmas
  • Em nosso futuro com vários núcleos, pode ser mais fácil dividir as linguagens funcionais em tarefas simultâneas (embora as linguagens não estritamente funcionais também estejam trabalhando duro no problema).
  • É mais fácil provar que os programas escritos em linguagens funcionais puras (sem efeitos colaterais) são matematicamente corretos.
Março de Corbin
fonte
5
+1 - Todos esses são pontos excelentes, e são explicados de forma mais concisa e com detalhes mais exatos do que o que tentei fazer.
jmort253
1
Com seu quarto ponto, você quis dizer que o idioma pode ser provado correto ou programas escritos no idioma? De qualquer forma, tanto linguagens impuras quanto programas escritos em linguagens impuras podem ser comprovadamente corretos, é apenas muito mais difícil e confuso.
Jörg W Mittag
1
@ Jörg W Mittag, é muito mais fácil raciocinar sobre as propriedades da própria linguagem também. A semântica denotacional é trivial para as linguagens funcionais e bastante complicada para o imperativo.
SK-logic,
engraçado como o segundo link fornece alguns argumentos "explícitos", sabendo que eu nem leio o primeiro link.
jokoon
+1: Ótima resposta. Eu gosto especialmente de como você coloca os pontos 1 e 2 das palavras.
Jim G.
9

Os conceitos de programação funcional criam uma base que mudará a maneira de pensar e o ajudará a resolver problemas do mundo real.

O conceito é semelhante ao motivo pelo qual todos aprendemos Cálculo Multi-Variável, Álgebra e / ou Física de Engenharia como cursos de Ciência da Computação, mesmo que nem sempre precisemos desse conhecimento específico em nossas carreiras.

É por isso que as faculdades de direito amam candidatos com bacharelado em matemática. Estudar Matemática ensina você a pensar em vários conceitos de uma maneira lógica, e a programação funcional ensina abstrações e muitos outros conceitos importantes que ajudam a resolver problemas e examiná-los sob uma luz diferente.

Em resumo, a programação funcional ajuda a ensinar como aprender.

jmort253
fonte
Talvez ele realmente não precise de um nome, então? Não é simplesmente o design do programa "correto"?
4

Quando você está começando, a programação funcional é o melhor modelo de pensamento. Porque a maioria dos seus programas não requer orientação a objetos. Pelo menos essa tem sido a minha experiência.

No entanto, agora que entro em alguns aplicativos que exigem separação de exibição e lógica, foi quando comecei a separar toda a lógica e o código de exibição, para tornar mais fácil para cada um fazer o que é melhor.

Mas você não saberá por que fazer isso, a menos que domine o Functional primeiro. Eu nunca gostei de pessoas me empurrando OO, ou que OO é a solução para tudo. Apenas certifique-se de que, independentemente da abordagem que você use, faça sentido para o que você está trabalhando, e não seja uma curva de aprendizado muito íngreme para levar muito tempo longe do trabalho pago.

crosenblum
fonte
1
+1 - Gosto que você aponte usando a melhor técnica para o trabalho: verifique se faz sentido.
jmort253
1
Infelizmente, o senso comum é raro em nossa indústria. Como cada um de nós tem experiências completamente diferentes, que por causa dos erros que cometemos são diferentes, cada um de nós desenvolve os hábitos diferentes e por que os pratica ... Como adaptar o controle da fonte, não faz sentido para quem sempre trabalhou por eles. eles mesmos.
crosenblum
"O senso comum é a coisa mais distribuída do mundo, pois cada um pensa que é tão bem-dotado com isso que mesmo aqueles que são mais difíceis de satisfazer em todos os outros assuntos não têm o hábito de desejar mais do que já ter." - Descartes
3

Porque enfatiza verbos, não substantivos. Às vezes são os verbos que importam.

Roger escasso
fonte
OOP enfatiza substantivos. Às vezes são os substantivos que importam. Como sabemos qual? - Falso dilema. Sistema
3

Porque, em geral, usa menos código para realizar a mesma tarefa. Menos código para escrever é menos código para manter. Além de ser menos código, também tende a ter menos estado e, portanto, é um pouco mais simples de se raciocinar (quando você estiver acostumado).

Alex Baranosky
fonte
Então, isso não é simplesmente a definição de 'melhor'? Por que queremos fazer algo diferente do que você descreveu?
2

Talvez porque as universidades desejem ensinar algo de todos os paradigmas de programação e, para certas coisas, a programação funcional seja melhor (como descrever o movimento dos personagens do jogo e descrever animações)

Coiote21
fonte