Todo estudante de programação, ao começar sua jornada, geralmente entra em contato com várias linguagens como Python, JavaScript, Java, entre outras. Um ponto importante que você provavelmente vai notar é que cada linguagem tem sua própria maneira de ser usada, ou seja, cada uma delas tem suas características e estrutura. Isso acaba influenciando a forma como você vai programar, mesmo antes de ver uma linha de código.
Primeiro ponto importante: todas as linguagens de programação são ferramentas. E como desenvolvedores, nossa responsabilidade é usar essas ferramentas para criar algo, para contar uma "história". Por exemplo, imagine que você queira construir um sistema de cadastro. Pensando como um usuário, você poderia descrever o que o sistema deveria fazer assim:
- Pegar as informações básicas da pessoa que será cadastrada.
- Verificar se essas informações estão corretas.
- Salvar as informações do cadastro.
- Mostrar todos os usuários cadastrados no sistema.
Agora, a questão principal é: como transformar essa descrição em código? Isso é o que chamamos de "paradigmas de programação", ou seja, o estilo ou o modelo de como programar. E dois paradigmas que são amplamente usados, mas não são os únicos, são o Paradigma Declarativo e o Paradigma Imperativo.
Por que esses dois paradigmas são importantes?
Porque eles formam a base para entender dois estilos muito comuns de programação: a Programação Orientada a Objetos (que herda do Paradigma Imperativo) e a Programação Funcional (que segue o Paradigma Declarativo).
Vamos entender o que cada um significa.
Programação Declarativa
A programação declarativa se concentra em o que você quer fazer, em vez de como fazer. Em outras palavras, você se preocupa mais com o resultado final do que com os passos necessários para chegar lá.
Exemplos de linguagens que seguem esse paradigma são: Haskell, Lisp, SQL e HTML. O que todas elas têm em comum? Elas focam em declarar o que você quer, e o sistema faz o resto. Vamos ver exemplos:
HTML:
<h1>Hello world</h1>
Aqui, você está dizendo que quer exibir um título "Hello world". Você não se preocupa com os detalhes de como o navegador vai renderizar o título, como o tamanho da fonte ou o estilo exato (isso poderia ser feito com CSS, que também é declarativo).
SQL:
SELECT * FROM Customers
Neste exemplo, você está dizendo que quer buscar todos os dados da tabela "Customers". O banco de dados sabe como fazer isso, e você não precisa dizer passo a passo como buscar ou ordenar esses dados (a menos que queira).
O ponto principal é que, com linguagens declarativas, o foco está no que você quer, e não nos detalhes de como chegar lá. Isso facilita seu trabalho, especialmente quando você precisa expressar uma ideia de forma simples.
Programação Imperativa
Por outro lado, a programação imperativa é o oposto: você precisa dizer como fazer. Aqui, você tem que detalhar o passo a passo que o programa deve seguir para atingir o resultado desejado.
Veja um exemplo em Java:
public class Main {
public static void main(String[] args) {
ArrayList<String> marca_carros = new ArrayList<String>();
marca_carros.add("Volvo");
marca_carros.add("BMW");
marca_carros.add("Ford");
marca_carros.add("KIA");
for (String marca : marca_carros) {
System.out.println(marca);
}
}
}
Neste exemplo, o código está dizendo exatamente como criar uma lista de carros, como adicionar marcas a essa lista, e como mostrar cada marca na tela. Ou seja, você precisa ser explícito sobre o que fazer e como fazer.
Outro exemplo é o JavaScript:
function adicionarCarros() {
var marca_carros = [];
marca_carros.push("Volvo");
marca_carros.push("BMW");
marca_carros.push("Ford");
marca_carros.push("KIA");
for (var marca of marca_carros) {
console.log(marca);
}
}
Aqui, o processo é muito parecido: você está detalhando como a lista de marcas deve ser criada, como os itens devem ser adicionados, e como eles serão mostrados.
Esses exemplos mostram a ideia básica do paradigma imperativo: você precisa controlar o como fazer em cada etapa do processo.
Como esses paradigmas se conectam?
Voltando ao exemplo do sistema de cadastro:
- Você pode usar JavaScript (imperativo) para pegar as informações básicas do usuário.
- Validar os dados usando uma linguagem como Java (também imperativo).
- Salvar as informações no banco de dados com SQL (declarativo).
- Exibir essas informações na tela usando HTML (também declarativo).
Ao entender como diferentes linguagens funcionam, você pode escolher a melhor ferramenta para cada parte do seu projeto, sem precisar ficar preso a um único estilo ou linguagem. Isso te ajuda a ser mais eficiente e flexível como desenvolvedor.
E, para finalizar, lembre-se de que um paradigma é apenas uma maneira de classificar como uma linguagem se comporta ou como ela organiza o código. Esse tema é bastante amplo, com diversos paradigmas e subparadigmas. Algumas linguagens, como JavaScript, podem adotar mais de um paradigma ao mesmo tempo — sendo funcionais, orientadas a objetos e até utilizando outros estilos. O mais importante é você entender quando usar cada paradigma para obter o melhor resultado no seu projeto. Com o tempo, você vai aprender a escolher a abordagem certa para resolver cada tipo de problema da melhor forma.