🚀 Capítulo 01: O que é um Paradigma? Imperativo vs Declarativo (Tema: Matrix)
NOTE
Este capítulo utiliza a temática de Matrix para explicar os Paradigmas. Seguir as regras passo a passo ou simplesmente reescrever a realidade? Escolha a sua pílula!
1. 🎯 Objetivo da Aula
Compreender o conceito de Paradigma de Programação e a grande divisão entre as duas maiores famílias de pensamento: o Paradigma Imperativo e o Paradigma Declarativo.
2. 🏢 O Cenário Prático (Seu Desafio)
Neo está tentando entender como a Matrix funciona.
- A Pílula Azul (Imperativo): Você segue as regras do sistema. Para fazer um café, você precisa dar as instruções exatas: “Pegue a caneca, coloque água, ligue a cafeteira, espere 5 minutos…“. Você diz ao computador o COMO fazer, passo a passo.
- A Pílula Vermelha (Declarativo): Você enxerga o código verde caindo. Você não se importa com o passo a passo. Você simplesmente diz à Matrix: “Quero um café”. O sistema se encarrega de fazer o café aparecer. Você diz ao computador o O QUE fazer.
Seu desafio é aprender a identificar esses dois modos de pensar e saber quando usar cada um!
3. 🧠 Fundamentos: A Teoria Traduzida
Um Paradigma de Programação não é uma linguagem, mas uma forma de pensar sobre como resolver problemas usando código.
📜 1. Paradigma Imperativo (Foco no “Como”)
Você dita uma sequência de comandos que alteram o estado do programa.
- Características: Uso intenso de variáveis (estado), laços de repetição (
for,while) e condicionais (if). - Exemplo: Para somar os números de um array, você cria uma variável
soma = 0, faz um loop e vai somando um por um.
🎨 2. Paradigma Declarativo (Foco no “O Que”)
Você descreve o resultado desejado, sem detalhar os passos para chegar lá.
- Características: Uso de funções de alta ordem, imutabilidade e ausência de loops explícitos.
- Exemplo: Para somar os números de um array, você usa uma função pronta como
reduce()ou uma consulta SQLSUM().
4. 📖 Exemplo Guiado: Filtrando Números
Imagine que queremos filtrar apenas os números pares de uma lista.
Abordagem Imperativa (Pílula Azul):
const numeros = [1, 2, 3, 4, 5, 6];
const pares = [];
for (let i = 0; i < numeros.length; i++) {
if (numeros[i] % 2 === 0) {
pares.push(numeros[i]);
}
}
console.log(pares); // [2, 4, 6]Abordagem Declarativa (Pílula Vermelha):
const numeros = [1, 2, 3, 4, 5, 6];
const pares = numeros.filter(n => n % 2 === 0);
console.log(pares); // [2, 4, 6]Repare como no declarativo nós não dissemos COMO percorrer a lista, apenas O QUE queríamos (filtrar os pares).
5. 🛠️ Prática Obrigatória 1: Identificando o Paradigma
Diga se as situações abaixo são mais Imperativas ou Declarativas:
- Você pede uma pizza pelo aplicativo digitando apenas o sabor.
- Você vai para a cozinha e faz a pizza passo a passo (massa, molho, forno).
- Uma consulta ao banco de dados usando SQL:
SELECT * FROM usuarios WHERE idade > 18.
6. 🛠️ Prática Obrigatória 2: O Custo de cada Pílula
A abordagem declarativa parece muito mais limpa e bonita. Mas o que acontece por baixo dos panos na função .filter() do JavaScript? Ela não precisa fazer um loop de qualquer jeito? Vale a pena usar o declarativo mesmo sabendo disso?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 01 Paradigmas) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
mod_10_paradigmas_e_padroes_de_projeto/
├── capitulos/
│ ├── capitulo_01_paradigma.md
│ └── codigos/
│ └── cap01/
│ └── pílula_azul.js
│ └── pílula_vermelha.js9. 💡 Checkpoint de Lógica
Se você estivesse construindo um sistema que precisa de extrema performance em hardware limitado, qual pílula você escolheria? Por quê?
10. 🔥 Desafio de Fixação
Pesquise quais linguagens de programação são consideradas puramente declarativas (Dica: Lembre-se do SQL e do HTML).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Declarativo (Você só disse o que queria).
- Imperativo (Você fez o passo a passo).
- Declarativo (O SQL é uma linguagem declarativa clássica).