The Code Codex
Tema
← Notas / Paradigmas

nota · texto08 out 2024 · 2 min

Paradigmas

O que significa isso?

Por definição paradigma é uma estrutura mental composta por teorias, experiências, métodos e instrumentos que serve para o pensamento organizar, de determinado modo, a realidade e os seus eventos. É a representação de um padrão a ser seguido.

E um paradigma de programação?

Seguindo a definição da palavra em si, um paradigma de programação nada mais é do que a forma como uma linguagem de programação estrutura suas partes, dando ferramentas para que os programadores possam modelar um sistema ou estrutura. Dada a estrutura proposta pelo paradigma, cabe ao utilizador dessa estrutura (no caso programador) que escolha o paradigma que mais se adéque ao problema.

Quais paradigmas de programação existem?

Existem diversos paradigmas, uns mais comuns do que outros e alguns que coexistem dentro de uma mesma linguagem de programação. Os mais usados hoje são o orientado a objetos e o funcional.

ParadigmaIdeia centralExemplos
Imperativo / proceduralUma sequência de comandos que muda o estado do programaC, Go, Pascal
Orientado a objetosDados e comportamento juntos em objetos que trocam mensagensJava, C#, Smalltalk
FuncionalFunções puras e dados imutáveis; o resultado depende só da entradaHaskell, Elixir, Clojure
DeclarativoVocê descreve o que quer, não como obterSQL, HTML, CSS
LógicoFatos e regras; o motor deduz as respostasProlog
Orientado a eventosO fluxo é guiado por eventos (cliques, mensagens)JavaScript no navegador

A mesma tarefa, somar os números pares de uma lista, em dois estilos:

// imperativo: diz passo a passo como fazer
int total = 0;
for (int n : numbers) {
if (n % 2 == 0) total += n;
}
// funcional/declarativo: descreve o resultado
int total = numbers.stream().filter(n -> n % 2 == 0).mapToInt(Integer::intValue).sum();

Pronto, esta é a ideia básica sobre paradigmas. Vale ressaltar que nem todas as linguagens vão implementar algum paradigma ao pé da letra, por exemplo: Golang não comporta herança, assim não atendendo 100% aos requisitos de uma linguagem orientada a objetos, mas tudo bem. Em Java, a programação funcional chegou como uma adaptação da linguagem (Java 8): não há funções de primeira classe de fato, e sim “Functional Interfaces”. As lambdas são implementações dessas interfaces por debaixo dos panos, e funciona. Melhor que Haskell ou outra linguagem funcional? Talvez, não entre em discussões sobre qual o melhor paradigma de todos simplesmente por comparar, é perda de tempo, tente entender o que é melhor para o que precisa ser resolvido.