Programação Funcional (vs) Recursiva (vs) Imperativa

Bronx

Power Member
Olá a todos, venho fazer uma pergunta que nem sei se está certa, nem sei se tem resposta.
Alguem me consegues explicar a diferença dessas programações? Ponham exemplos sff (Em C de preferência).
Obrigado :)
 
que eu saiba nao existe programação recursiva. o que diferencia funcional de imperativa é a maneira como programas. em funcional escreves funções e descreves o programa com recurso a funções matematicas enquanto imperativa descreves o programa comando a comando descrevendo o que o computador deve fazer em cada momento

Contraste com a programação imperativa

A programação funcional pode ser contrastada com a programação imperativa. Na programação funcional parecem faltar diversas construções freqüentemente (embora incorretamente) consideradas essenciais em linguagens imperativas, como C ou Pascal. Por exemplo, em uma programação estritamente funcional, não há alocação explícita de memória, nem declaração explícita de variáveis. No entanto, essas operações podem ocorrer automaticamente 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. Ambas as operações podem ocorrer nos pontos de entrada e na saída da função, então efeitos colaterais no cálculo da função são eliminados. Ao não permitir efeitos colaterais em funções, a linguagem oferece transparência referencial. Isso assegura que o resultado da função será o mesmo para um dado conjunto de parâmetros não importando onde, ou quando, seja avaliada. Transparência referencial facilita muito ambas as tarefas de comprovar a correção do programa e automaticamente identificar computações independentes para execução paralela.
Laços, outra construção de programação imperativa, está presente através da construção funcional mais geral de recursividade. Funções recursivas invocam-se 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. Recursividade em programação funcional pode assumir várias formas e é em geral uma técnica mais poderosa que o uso de laços. Por essa razão, quase todas as linguagens imperativas também a suportam (sendo Fortran 77 e COBOL exceções notáveis).

em http://pt.wikipedia.org/wiki/Programação_funcional
 
Ter tem, mas não está 100% correcta (penso eu de que :P)

Linguagem Funcional e Imperativa são dois paradigmas de programação,


A Funcional trata todo o problema com um conjunto de funções matemáticas e tens como exemplo o OCaml e o LISP.

Na linguagem imperativa tens comandos imperativos que alteram variaveis, como exemplo tens o C e o Pascal.

A recursividade é um metodo de programação (e não um paradigma de programação) que faz com que uma função se possa chamar a si mesma (normalmente usas muito a recursividade em C para tratares de estruturas de dados dinamicas, como arvores). Penso que na funcional tambem utilizas (not sure).

Espero ter-te ajudado
Cumps
 
Penso que na funcional tambem utilizas (not sure).

Também é usada recursividade, e muita, nas linguagens funcionais. O mesmo acontece com o lambda-calculus. Eu tenho essa experiência do Haskel que é a unica linguagem que realmente conheço a fundo(do paradigma funcional).
By the way, existem ainda outros paradigmas, como as linguagens orientadas a objectos: Java, C#, c++, python, vb.net etc etc.
 
Para ser mais preciso:

Numa linguagem de programação imperativa descreve-se a forma de obter os outputs a partir dos inputs. Vantagem: os programas nela escritos estão mais perto (a nível de modelo abstracto) das máquinas físicas a que chamamos computadores, pelo que é mais fácil obter tradutores de programas escritos nestas linguagens para a linguagem que é entendida pelo computador. Desvantagem: é muito difícil determinar a relação precisa entre as entradas e as saídas de um programa (característica importante quando pretendemos raciocinar sobre os programas).

Um programa escrito numa linguagem de programação declarativa descreve a relação existente entre os inputs e os outputs, sem duvidar da forma como tais outputs são obtidos. Esta descrição pode ser sob a forma de predicados (como acontece na programação lógica) ou pode ser sob a forma de equações (como acontece na programação funcional).

in Fundamentos da Computação, Livro II: Programação Funcional

Recursividade como já explicaram, é um método de programação.
 
Back
Topo