Paradigma de Programação Funcional

De Aulas
Revisão de 16h46min de 19 de março de 2014 por Admin (discussão | contribs)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

Links Relacionados: Linguagens de Programação

Introdução

O Paradigma de Programação Funcional trabalha na forma de avaliação de funções matemáticas, evitando estados ou dados mutáveis, em contraste com a programação imperativa, que enfatiza a mudança de estado do programa.

Funções podem ter parâmetros de entrada e um valor de retorno, caracterizado como o resultado da função.

Esse paradigma de programação teve fortes influências do Cálculo lambda e das linguagens de programação:

Como alguns exemplos notáveis de linguagens de programação funcionais que têm sido utilizadas academicamente e na indústria/comércio, podemos citar:

Contraste entre a Programação Funcional e a Programação Imperativa

Na programação estritamente funcional, não há alocação explícita de memória, nem declaração explícita de variáveis. Isso ocorre de forma automática quando a função é invocada.

A alocação de memória ocorre para criar espaço para os parâmetros e para o valor de retorno, e a declaração ocorre para copiar os parâmetros dentro deste espaço recém-alocado e para copiar o valor de retorno de volta para dentro da função que a chama. Os efeitos colaterais no cálculo da função são eliminados (Transparência Referencial).

A transparência referencial visa assegurar que o resultado da função será o mesmo para um dado conjunto de parâmetros não importando onde, ou quando, seja avaliada. Ela também facilita as tarefas de comprovar a correção do programa e automaticamente identificar computações independentes para execução paralela.

Na programação funcional os laços (da programação interativa) estão presentes na forma de recursividade. As funções recursivas invocam a si mesmas, permitindo que uma operação seja realizada várias vezes. Na verdade, isso prova que laços são equivalentes a um tipo especial de recursividade chamada recursividade reversa.

Linguagens Funcionais e Tutoriais