DEV Community

Cover image for Programação imperativa e declarativa
Ary Barros
Ary Barros

Posted on

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!

Top comments (1)

Collapse
 
bernardoeuler profile image
Bernardo Euler

muito bom texto!