o diferença chave entre programação funcional e programação imperativa é que o a programação funcional considera os cálculos como funções matemáticas e evita alterações de estado e dados mutáveis, enquanto a programação imperativa usa as instruções que alteram o estado dos programas.
Um paradigma de programação fornece um estilo de construção da estrutura e elementos de um programa de computador. Os paradigmas de programação ajudam a classificar linguagens de programação com base em seus recursos. Uma linguagem de programação pode influenciar mais paradigmas. No paradigma orientado a objetos, o programa é estruturado usando objetos e os objetos transmitem mensagens usando métodos. A programação lógica pode expressar a computação exclusivamente em termos de lógica matemática. Outros dois paradigmas de programação são programação funcional e programação imperativa. A programação funcional permite expressar cálculos como a avaliação de funções matemáticas. A programação imperativa fornece instruções que alteram explicitamente o estado da memória. Este artigo discute a diferença entre programação funcional e programação imperativa.
1. Visão geral e principais diferenças
2. O que é programação funcional
3. O que é programação imperativa
4. Semelhanças entre programação funcional e programação imperativa
5. Comparação lado a lado - programação funcional versus programação imperativa em forma de tabela
6. Resumo
A programação funcional é baseada em matemática. O princípio chave por trás da programação funcional é que todo o cálculo é considerado como uma combinação de funções matemáticas separadas. Uma função matemática mapeia entradas para saídas. Suponha que exista uma função chamada f (x) = x * x. O valor x 1 é mapeado para a saída 1. O valor x 2 é mapeado para a saída 4. O valor x 3 é mapeado para a saída 9 e assim por diante.
Figura 01: Exemplo de linguagem de programação funcional - Haskell
Na programação funcional, os padrões são considerados. As linguagens de programação funcional Haskell, usam o método abaixo para encontrar a soma dos números.
A função soma possui valores inteiros, e o resultado também será um número inteiro. Pode ser escrito como soma: [int] -> int. A soma pode ser feita seguindo os padrões abaixo.
soma [n] = n, a soma de um número é o próprio número.
Se houver uma lista de números, ela poderá ser escrita da seguinte maneira. O n representa o primeiro número e ns representa os outros números
soma (n, ns) = n + soma ns.
Os padrões acima podem ser aplicados para encontrar a soma de três números que são 3,4,5.
3 + soma [4,5]
3 + (4 + soma [5])
3+ 4 + 5 = 12
Diz-se que uma função ou expressão tem efeitos colaterais se modificar algum estado fora de seu escopo ou tiver uma interação observável com suas funções de chamada além do valor retornado. A programação funcional minimiza esses efeitos colaterais. As alterações de estado não dependem das entradas de função. É útil ao entender o comportamento do programa. Uma desvantagem da programação funcional é que o aprendizado da programação funcional é mais difícil comparado à programação imperativa.
A programação imperativa é um paradigma de programação que usa as instruções que alteram o estado de um programa. Ele se concentra em descrever como um programa opera. Linguagens de programação como Java, C e C # são linguagens de programação imperativas. Ele fornece um procedimento passo a passo sobre o que fazer. Linguagens de programação imperativas contêm estruturas como if, else, while, para loops, classes, objetos e funções.
Figura 02: Exemplo de linguagem de programação imperativa - Java
A soma de dez números pode ser encontrada em Java da seguinte maneira. Em cada iteração, o valor i é adicionado à soma e atribuído à variável sum. Em cada iteração, o valor da soma continua sendo adicionado à soma calculada anteriormente.
int soma = 0;
para (int i = 0; i< =10; i++)
soma = soma + i;
A programação imperativa é fácil de aprender, entender e depurar. É fácil encontrar o estado do programa devido ao uso de variáveis de estado. Algumas desvantagens são que ele pode tornar o código longo e também pode minimizar a escalabilidade.
Programação funcional vs imperativa | |
Programação Funcional é um paradigma de programação que considera a computação como a avaliação de funções matemáticas e evita alterações de estado e dados mutáveis. | Programação imperativa é um paradigma de programação que usa declarações que mudam o estado de um programa. |
Estruturas | |
Programação funcional contém chamadas de função e funções de ordem superior. | Programação imperativa contém se, senão, enquanto, para loops, funções, classes e objetos. |
Linguagens de programação | |
Scala, Haskell e Lisp são linguagens de programação funcional. | C, C ++, Java são linguagens de programação imperativas. |
Foco | |
Programação funcional foca no resultado final. | A programação imperativa se concentra em descrever como um programa opera. |
Simplicidade | |
Programação funcional é difícil. | Programação imperativa é mais fácil. |
Um paradigma de programação fornece um estilo de construção da estrutura e elementos de um programa de computador. Programação funcional e programação imperativa são dois deles. A diferença entre programação funcional e programação imperativa é que a programação funcional considera os cálculos como funções matemáticas e evita alterações de estado e dados mutáveis, enquanto a programação imperativa usa as instruções que alteram o estado dos programas..
1. "Programação imperativa". Wikipedia, Wikimedia Foundation, 28 de março de 2018. Disponível aqui
2. "Programação Funcional". Wikipedia, Wikimedia Foundation, 28 de março de 2018. Disponível aqui
3.Computerphile. YouTube, YouTube, 30 de agosto de 2013. Disponível aqui
1.'Haskell Logo'By Haskell1965 - Obra própria, (CC BY-SA 3.0) via Commons Wikimedia
Por Screenshots do Linux (CC BY 2.0) via Flickr