Hoje em dia, programar se tornou a principal rotina das pessoas inseridas no mercado da tecnologia. Seja na programação de front-end, back-end, ciência de dados, microcontroladores, dentre outras.
Muitos de nós encaramos a programação como uma especie de ordem, onde você indica ao computador o que você quer, por meio de códigos, e ele lhe devolverá da forma correta.
Deste pensamento, surgiram as linguagens de programação como conhecemos hoje com estruturas de repetição e condição. É por esse meio que conhecemos hoje a Programação Imperativa.
O que é uma programação imperativa
A grande parte das linguagens de programação se baseiam em procedimentos, e tentam com isso, abordar situações e funcionamentos reais. Como a programação é um meio e não um fim, o processo natural do programador é focar em como resolver determinado problema, sem, muitas vezes, verificar e consolidar sua solução.
A programação imperativa surgiu do fato que, por meio de códigos, o programador escrever situações que indicam algo ao computador por meio da conjugação imperativa dos verbos, seguindo sempre um método estruturado e sequencial das coisas.
- Se acontecer isso > Faça isso
- Caso A seja igual a B > Produza esse bloco
- Enquanto existir C > Faça D aparecer
E são dessas situações que muitos códigos de varias linguagens podem demostrar essa situação. Vejamos alguns abaixo:
If Else em Lua
if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a*b
elseif op == "/" then
r = a/b
else
error("invalid operation")
end
For em Python
for item in [3,4,5,6,7]:
print(item)
While em Java
public class while {
public static void main(String args[]) {
int cont = 0;
while (cont < 50) {
System.out.println("Repeat: " + cont);
cont++;
}
}
}
Vantagens
Programar imperativamente é o modelo mais aproximado do que poderíamos ver no mundo real entre a iteração humano-computador. Seu entendimento é fácil em níveis iniciais e é eficiente na maioria dos casos, se tornando o modelo geral de varias linguagens.
Desvantagens
Apesar de tudo isso, a programação imperativa em projetos grandes tem difícil legibilidade e manutenibilidade, focando sempre em como a tarefa deve ser feita e não em o que deve ser feito, gerando tratamentos de dados confusos e programas mais suscetível a erros.
E onde entra a programação declarativa?
A programação declarativa é um conceito que fundamentou muitas linguagens existentes na atualidade, popularizando-se com o Javascript, e algumas já consolidadas como o SQL.
A programação declarativa se centra em o que deve ser solucionado, e busca com isso, codigos limpos, livres de complexidade e de abordagens estruturais, onde o foco é a lógica, manutenção e diminuição de efeitos colaterais. Isso favorece o código reutilizável, legível e sucinto.
Que tal um exemplo?
O Javascript consegue utilizar ambas abordagens. Veja abaixo um código que acrescenta "I Love" em um array de linguagens.
let languages = ["python", "java", "go", "ruby"];
// Imperative
for(let i = 0; i < languages.length; i++){
languages[i] = "I love "+ languages[i];
}
// Return: ["I love python", "I love java", "I love go", "I love ruby"]
// Declarative
languages.map(language => "I love" + language);
// Return: ["I love python", "I love java", "I love go", "I love ruby"]
Perceba que, no código declarativo, não houve nenhuma indicação ao computador de como ele deveria fazer o processo, mas sim, lendo o próprio código, percebemos que ele irá mapear o array, e retornar o que queríamos. O código se tornou mais limpo, menos verboso e facilmente replicável.
Porém, nem tudo são flores, utilizar o código declarativo exige um estudo maior, além de uma adaptação difícil, que é resultante de hábitos antigos em linguagens imperativas.
Vantagens
- Reduzir efeito colaterais
- Legibilidade
- Redução de bugs
Desvantagens
- Difícil adaptação
- Elevada complexidade de utilização
Veredito Final
Hoje em dia, a programação funcional, e consequentemente, declarativa, tem se tornado
o padrão de código da atualidade.Esse crescimento facilita com que novas linguagens possam se adaptar a isso e gerar programas mais legíveis com maior desempenho.
A programação é um meio, não um fim.
Obrigado pela leitura!
Top comments (1)
muito bom texto!