AULA 24 MÓDULO 2 programação funcional ⏱ 50 min

Paradigmas de Programação

Os 3 paradigmas: imperativo, OOP, funcional. Por que funcional ganhou espaço em JavaScript. Código previsível, testável, composável.

paradigmaimperativoOOPfuncionalmultiparadigmatestabilidade

Os 3 paradigmas principais

Um paradigma de programação é um estilo de organizar e estruturar código. A maioria das linguagens modernas são multiparadigma — você escolhe o estilo mais adequado para cada problema.

📋
Imperativo
COMO fazer. Sequência de instruções. Você controla cada passo.
Exemplos: C, Assembly, scripts shell
🏗️
Orientado a Objetos
Modela o mundo em objetos com estado e comportamento. Herança, polimorfismo.
Exemplos: Java, C#, Python, Ruby
🔬
Funcional
O QUÊ fazer. Transforma dados com funções puras, sem efeitos colaterais.
Exemplos: Haskell, Clojure, Elm. Suporte parcial: JS, Python
JavaScript é multiparadigma
JS suporta imperativo, OOP e funcional. Na prática do backend Node.js moderno, misturamos OOP (classes/serviços) com funcional (map, filter, reduce, compose).

Por que aprender funcional?

A programação funcional ganhou adoção massiva no JavaScript moderno porque resolve dois problemas críticos: código previsível (sem surpresas de estado) e código testável (funções puras são triviais de testar).

🧪
testabilidade
Uma função pura: dado x, sempre retorna y. Zero mocks, zero setup. Comparado a métodos de classe com estado: você precisa configurar o objeto inteiro antes de testar 1 método.

O que JavaScript oferece

JavaScript tem suporte de primeira classe a funções: elas são valores, podem ser passadas como argumento, retornadas e armazenadas. Isso é o fundamento de tudo que veremos neste módulo.

javascript
// 3 paradigmas para o mesmo problema — filtrar usuários ativos

const users = [
  { id: 1, name: 'Ana',   active: true  },
  { id: 2, name: 'Bob',   active: false },
  { id: 3, name: 'Carol', active: true  },
]

// Imperativo — como fazer
const ativos1 = []
for (const u of users) {
  if (u.active) ativos1.push(u)
}

// Funcional — o quê fazer
const ativos2 = users.filter(u => u.active)

// Resultado: [{ id:1, name:'Ana' }, { id:3, name:'Carol' }]
// Funcional: 1 linha, imutável, testável, legível
quiz · aula 24
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
Qual é a característica central da programação funcional?
QUESTÃO 02
Por que funções puras são mais fáceis de testar?
QUESTÃO 03
JavaScript é melhor descrito como...
0/3