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.
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
For em Python
for item in [3,4,5,6,7]: print(item)
While em Java
public class while { public static void main(String args[]) { int cont = 0; while (cont < 50) { System.out.println("Repeat: " + cont); cont++; } } }
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.
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"]
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)
muito bom texto!