O FP é baseado no cálculo lamdba. Você precisa saber disso. É um bom ponto de partida. Funções são tudo. Não há conceito de estado (embora você possa falsificá-lo em um nível superior).
No POO,
a = 1 a = a + 1
é aceito. Não é assim no FP. Você simplesmente não pode atribuir à variável um outro valor. Se você deseja aprender FP a longo prazo, aprenda Haskell. É a versão mais pura do FP por aí e também é bastante complicada (eu apenas comecei a aprender), mas ainda vale a pena aprender.
Uma Introdução à Programação Funcional oferece uma visão geral de alto nível sobre o que é o FP.
Duas advertências
- Se você quer aprender FP para empregos, não há muitas vagas por aí. Procedural e OOP ainda governam o mercado de trabalho. Mas o FP pode ajudá-lo muito a explorar novas maneiras de resolver um problema.
- Compiladores FP não são incrivelmente rápidos. Como a FP está mais preocupada em resolver o problema, você não pode esperar a velocidade C. Mas ainda assim você pode emitir instruções ao compilador (em Haskell) para acelerar o processo de execução. A desvantagem é que você dedica muito tempo a focar no programa em vez de nos bugs de combate a incêndios.