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