(~1950) - FP naturalmente gasta mais memória, e memória era muito cara nos anos 50 - Devido aos custos, a Programação imperativa + OOP se popularizou muito.
sim. Poder de processamento é algo finito, a única maneira de tornar ele “infinito” é com paralelismo. OOP é péssimo para paralelismo, pois ele precisa manter o estado dos objetos. FP trabalha com imutabilidade, assim processos podem ser feitos em várias máquinas com pouco esforço.
funcional. FP está entre os muitos paradigmas que é possível implementar nele. Por não ser “naturalmente funcional” escrever de maneira funcional no JavaScript deve partir do desenvolvedor.
sejam na memória ou I/O - Uma função pura terá sempre o mesmo retorno para a mesma entrada. - É muito fácil criar funções com efeitos colaterais, é preciso estar atento. - Estão diretamente ligadas a funções matemáticas
software feito com funções puras é muito mais fácil de manter, localizar bugs e corrigi-los é extremamente simples. São exemplos de funções puras: - Array.prototype.map - Array.prototype.filter - Array.prototype.reduce
variável não muda de valor após sua atribuição - Não é algo difícil, apenas exige uma mudança de pensamento - Consome mais memória, pois você está trabalhando com cópias não com referências. - Permite paralelismo O conceito de imutabilidade pode parecer controverso e talvez impossível, mas é bem simples uma vez que você se propõe a isso.
JavaScript possui um limite para a recursividade, cada navegador estabelece um número. Isso acontece pois o stack de processos fica “cheio” podendo travar a máquina do usuário. Algumas linguagens implementam tail call optimized, isto já está previsto no ES2015+, porém os navegadores ainda não implementaram.
para uma função” Se uma função precisa de 3 argumentos para ser executada, ao passar um argumento para ela, o resultado será uma nova função que aceita dois argumentos. Esse processo se repete até que todos os argumentos tenham sido passados.
permite criar uma nova função a partir da combinação de outras funções O resultado de uma função é passado como argumento para a próxima função, até que todas as funções tenham sido executadas. Também é conhecido como pipe-line de funções
que implementam essas técnicas ou regras. Programação funcional acima de tudo é uma metodologia. Mesmo em linguagens sem suporte ou com suporte baixo, é possível tirar proveito dessas técnicas.
de uma vez. Já ficou claro que você já usa muita coisa de FP sem saber, só precisa começar a usar mais, e consciente do uso. Com o tempo pode incorporar bibliotecas como o Ramda.js que te ajudam e forçam a escrever de maneira totalmente funcional.