Programação imperativa e declarativa

aryclenio

Ary Barros

Posted on July 12, 2020

Programação imperativa e declarativa

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.

Man pointing to computer

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
Enter fullscreen mode Exit fullscreen mode

For em Python

for item in [3,4,5,6,7]:
    print(item)
Enter fullscreen mode Exit fullscreen mode

While em Java

public class while {
    public static void main(String args[]) {
        int cont = 0;
        while (cont < 50) {
            System.out.println("Repeat: " + cont);
            cont++;
        }
    }
} 
Enter fullscreen mode Exit fullscreen mode

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.

Alt Text

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"]

Enter fullscreen mode Exit fullscreen mode

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!

💖 💪 🙅 🚩
aryclenio
Ary Barros

Posted on July 12, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Imperative and declarative programming
productivity Imperative and declarative programming

July 12, 2020

Programação imperativa e declarativa
productivity Programação imperativa e declarativa

July 12, 2020