Programação Imperativa x Declarativa

Javascript

Pois é, você já deve ter ouvido falar em ambos os termos, sendo eles: Imperativo x Declarativo, mas, afinal o que isso impacta no mundo de desenvolvimento? Podemos escrever nossos códigos das duas maneiras, ou seja, nosso código pode ser Imperativo ou Declaro e em alguns casos os dois ao mesmo tempo (ambos misturados).

Para que o entendimento fique um pouco mais fácil e simples, vamos trazer o exemplo para o mundo real, imagine o seguinte cenário:

Você irá levar sua compania para um jantar

Chegando no restaurante o garçom vem até vocês e pergunta:

Boa noite, o que eu posso ajudar?

Aqui você poderia responder de duas maneiras, sendo elas: Imperativa ou Declarativa.

Respondendo de forma Imperativa:

Vejo que a mesa próxima a TV está vázia, minha compania e eu vamos andando ate lá e nos sentar.

Respondendo de forma Declarativa:

Mesa para dois, por favor.

Veja que ambas as respostas apesar de terem o mesmo objetivo e finalidade, são bem diferentes umas das outras, em outras palavras:

  • Abordadem Imperativa: Você irá descrever "Como" você faz alguma coisa.
  • Abordagem Declarativa: Você irá descrever "O que" você faz.

De forma simplista e resumida, a diferença seria basicamente essa.

Beleza, já vimos um exemplo do mundo real, agora como ele se encaixa em nosso mundo de desenvolvimento? Simples, imagine alguns exemplos: Dobrar os valores de um array ou somar os valores de um array, ambos também podem ser implementados das duas maneiras.

Dobrando valores de um array de forma Imperativa:

function double(arr) {
    let results = []
    for (let i = 0; i < arr.length; i++){
        results.push(arr[i] * 2)
    }
    return results
}

Somando os valores de um array de forma Imperativa:

function sum(arr) {
    let result = 0
    for (let i = 0; i < arr.length; i++){
        result += arr[i]
    }
    return result
}

Agora, podemos fazer os mesmos exemplos de forma Declarativa, vamos ver como eles ficam?

Dobrando valores de um array de forma Declarativa:

const double = arr => arr.map((item) => item * 2)

Somando os valores de um array de forma Declarativa:

const sum = arr => arr.reduce((prev, current) => prev + current, 0)

Veja que fica muito mais direto, objetivo e menos verboso.

Conclusão

Nesse post resolvi fugir um pouco dos códigos, linguagens, tecnologias e bibliotecas para focar um pouco em teoria e conceitos. Vimos que de forma Imperativa nossos códigos tendem a serem mais verbosos e tediosos, porém, com a abordagem Declarativa tudo fico mais objetivo e menor.

E aí, você já conhecia esses conceitos? Não deixe de comentar, se você gostou do post se inscreva na newsletter abaixo e fique por dentro das novidades.

Até a próxima.

Matheus Castiglioni

Matheus Castiglioni

Apaixonado pelo mundo dos códigos e um eterno estudante, gosto de aprender e saber um pouco de tudo, aquela curiosidade de saber como tudo funciona, tento compartilhar o máximo de conhecimentos adquiridos e ajudar todos aqueles que sou capaz.

Post's Relacionados

Visualize outros post's relacionados ao mesmo assunto:

Otimizando componentes do React com PureComponent

Javascript
Pois é, você já deve ter ouvido falar em ambos os termos, sendo eles: Imperativo x Declarativo, mas, afinal o que isso impacta no mundo de desenvolvimento? Podemos escrever nossos códigos das duas maneiras, ou seja, nosso código pode ser Imperativo o...
Continuar lendo

Criando componente com Shadow DOM

Javascript
Pois é, você já deve ter ouvido falar em ambos os termos, sendo eles: Imperativo x Declarativo, mas, afinal o que isso impacta no mundo de desenvolvimento? Podemos escrever nossos códigos das duas maneiras, ou seja, nosso código pode ser Imperativo o...
Continuar lendo

Trabalhando com eventos no JavaScript

Javascript
Pois é, você já deve ter ouvido falar em ambos os termos, sendo eles: Imperativo x Declarativo, mas, afinal o que isso impacta no mundo de desenvolvimento? Podemos escrever nossos códigos das duas maneiras, ou seja, nosso código pode ser Imperativo o...
Continuar lendo

Referenciando componentes no React

Javascript
Pois é, você já deve ter ouvido falar em ambos os termos, sendo eles: Imperativo x Declarativo, mas, afinal o que isso impacta no mundo de desenvolvimento? Podemos escrever nossos códigos das duas maneiras, ou seja, nosso código pode ser Imperativo o...
Continuar lendo

Atualizando estado dos componentes no React

Javascript
Pois é, você já deve ter ouvido falar em ambos os termos, sendo eles: Imperativo x Declarativo, mas, afinal o que isso impacta no mundo de desenvolvimento? Podemos escrever nossos códigos das duas maneiras, ou seja, nosso código pode ser Imperativo o...
Continuar lendo