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.
| Paradigma | Ideia central | Exemplos |
|---|---|---|
| Imperativo / procedural | Uma sequência de comandos que muda o estado do programa | C, Go, Pascal |
| Orientado a objetos | Dados e comportamento juntos em objetos que trocam mensagens | Java, C#, Smalltalk |
| Funcional | Funções puras e dados imutáveis; o resultado depende só da entrada | Haskell, Elixir, Clojure |
| Declarativo | Você descreve o que quer, não como obter | SQL, HTML, CSS |
| Lógico | Fatos e regras; o motor deduz as respostas | Prolog |
| Orientado a eventos | O 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 fazerint total = 0;for (int n : numbers) { if (n % 2 == 0) total += n;}
// funcional/declarativo: descreve o resultadoint 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.