Desenvolvimento

1 nov, 2018

Programação Imperativa x Declarativa

100 visualizações
Publicidade

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 Declarativo,  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ê levará sua compania para um jantar

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

  • Boa noite, em que 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á vazia. Minha compania e eu vamos andando ate lá e nos sentaremos”

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ê descreverá “como” você faz alguma coisa.
  • Abordagem Declarativa: você 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

Neste artigo 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 fica mais objetivo e menor.

E ai, você já conhecia esses conceitos? Não deixe de comentar!

Até a próxima.