Imperativo ou Declarativo?

Pedro Barros
Opensanca

--

Conforme vamos nos munindo de conhecimento ao longo de nossa longa caminhada nos deparamos com diversas linguagens de programação mas muito mais empolgante do que aprender uma nova linguagem de programação é aprender um novo paradigma de programação.

A parte mais interessante é perceber como o paradigma funciona. Isso acontece de modo intuitivo, muito parecido com como quando se aprende um novo idioma: nada faz sentido no começo, tudo é muito mecânico e de repente um estalo e tudo faz sentido!

Mind blow!!!

Há muitos paradigmas de programação, mas a maioria são variações dos mesmos tipos básicos: imperativo, funcional e declarativo. Nesse post irei abordar somente os paradigmas imperativo e declarativo com exemplos em Javascript.

A Programação Imperativa se baseia em especificar os passos que um programa deve seguir para alcançar um estado desejado. Pelo fato de permitir o uso de procedimentos como estruturação, também é conhecido como Procedural.

Os Procedimentos também são conhecidos como métodos, subrotinas, rotinas ou funções que muitas vezes são confundidas com funções matemáticas que são similares àquelas usadas na Programação Declarativa. Um dado procedimento pode ser chamado em qualquer momento durante a execução de um programa, inclusive por outros procedimentos ou por si mesmo. Um programa é considerado imperativo quando você diz para ele como fazer alguma coisa. Segue exemplo:

Vantagens

  • Eficiência
  • Modelagem natural dos problemas do mundo real
  • Consolidado e com dominância de mercado

Desvantagens

  • Foca no “COMO” e não o “QUE” precisa ser feito
  • Difícil legilibilidade

Já a Programação declarativa é um paradigma de programação baseado em programação funcional, programação lógica ou programação restritiva. Um programa se diz declarativo quando descreve o que ele faz e não como seus procedimentos funcionam. Na programação declarativa, não há a ideia de estado do programa, como ocorre na programação imperativa. Segue exemplo:

Vantagens

  • Reduzir efeito colaterais
  • Minimizar mutabilidade
  • Mais legilibilidade e menos bugs

Desvantagens

  • Não oferece alocação explícita de memória ou declaração explícita de variáveis, necessários para a resolução de muitos problemas reais.

Dica do dia: Nunca se prenda a somente um paradigma ou um conceito, existem várias outras formas de abordar o mesmo problema. Nunca coloque um limite para si mesmo!

Na Computação não existe verdade absoluta, tudo é relativo!

Acredito que a cada conceito novo que nos munimos é como uma nova forma de se expressar, que pode ou não facilitar a comunicação e resolução de problemas. Então tome cuidado com suas escolhas e seja feliz.

Bom por hoje é só pessoal, bons estudos, deixem seus comentários e até a próxima!!!

--

--