Aprendendo Clojure, Part-I Paradigma Funcional!

Programação funcional é um desses termos infelizes na programação de abuso e envolta em confusão, mas que realmente não deve ser assim tão misterioso. Melhor entendida como uma alternativa ao paradigma de programação imperativa, programação funcional é caracterizada por:
- Funções sem efeitos colaterais
Esta não é a forma de trabalho funciona em imperativo (sem programação) funcional. No código imperativo, muitas vezes funções:
1. produzem efeitos colaterais (como escrever para um arquivo ou algum dispositivo de I / O)
2. transformam suas entradas e variáveis globais
3. modificação seu comportamento baseado em estado fora da função
Funções puras têm duas grandes vantagens:
1. Funções que evitam mutação de dados locais e evitam a leitura ou a mutação de dados globais são mais fáceis de entender e mais favorável às provas de regularidade ou simplesmente, testes!.
2. Funções que evitam a leitura e a escrita de estado compartilhado podem ser executados simultaneamente sem as preocupações habituais de simultaneidade(concorrencia).
Agora, a objeção óbvia a escrever todas as nossas funções para executar sem efeitos colaterais é que precisamos de efeitos colaterais para os nossos programas para finalmente fazer alguma coisa útil. Como diz o ditado, um programa sem efeitos colaterais não faz nada mais do que deixar o seu CPU quente. O ideal na programação funcional, então, é simplesmente isolar as mudanças de estado, e não eliminá-los totalmente. Em uma linguagens puramente funcionais, como Haskell, pureza funcional é forçado pelo compilador de tal forma que todos os possíveis efeitos colaterais devem ser expressamente circunscritos no código. Uma língua impuramente funcional, como Clojure, não faz essa exigencia: Clojure ajuda a estruturar o seu código de forma funcional, mas delega a você para a responsabilidade de manter os efeitos colaterais de seu código puramente funcional.
- Os dados imutáveis
Você provavelmente está pensando que isso não soa pratico nem utilizavel, mas é surpreendente a quantidade de trabalho pode ser feito sem dados mutáveis. É verdade que os programas do mundo real não pode ter dados totalmente imutáveis, mas muito mais dados podem ser imutáveis do que é comumente aceito pelos programadores acostumados apenas a programação imperativa.
- Funções de primeira classe
Na programação funcional, as funções são de "primeira classe", ou seja, as funções são, elas próprias valores que podem ser passados como argumentos ou armazenados em variáveis. Muitas linguagens dinâmicas - Javascript, Ruby, Python, etc - têm funções de primeira classe, mas essas linguagens não são geralmente consideradas funcionais.
- A função de fluxo de controle baseado
Marcadores: clojure functional concurrency performance
0 Comentários:
Postar um comentário
Assinar Postar comentários [Atom]
<< Página inicial