DEV Community

felipe bs
felipe bs

Posted on

PARADIGMAS

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:

  1. Pegar as informações básicas da pessoa que será cadastrada.
  2. Verificar se essas informações estão corretas.
  3. Salvar as informações do cadastro.
  4. 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>

SELECT in TABLE

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

Tag H1 title

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);
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

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);
  }
}
Enter fullscreen mode Exit fullscreen mode

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:

  1. Você pode usar JavaScript (imperativo) para pegar as informações básicas do usuário.
  2. Validar os dados usando uma linguagem como Java (também imperativo).
  3. Salvar as informações no banco de dados com SQL (declarativo).
  4. 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.

Top comments (0)