Skip to main content

Existem diversas maneiras diferentes de se programar uma aplicação, e todas elas são úteis e válidas. Mas você conhece os diversos paradigmas da programação?

Como toda boa arte, a programação tem várias escolas de pensamento e formas de se chegar a algum objetivo comum. Ao longo do tempo, os engenheiros perceberam que havia diversas maneiras de se construir uma aplicação de forma boa e efetiva; alguns gostam mais de umas, outros de outras, e cada um segue aquilo que melhor lhe cai, ou que mais se aplica ao projeto em questão. A isso damos o nome de paradigmas da programação.

Assim ocorre com todo e qualquer ofício. Pensemos nas escolas de música e de artes da nossa história: diversas formas de se chegar a uma composição!

Com isso, é possível notar-se que conhecer ou mesmo saber programar em diversos paradigmas da programação é um grande diferencial para todo aquele que persegue uma carreira como desenvolvedor, qualquer que seja a sua área.

E é para te ajudar na jornada para ser um ótimo desenvolvedor que escrevemos esse artigo. Aqui você poderá conhecer quais são os paradigmas de programação, ter uma ideia de qual pode ser o que você mais goste e também saber quais as linguagens em que você pode programar com uso de determinado paradigma.

Por que utilizar os paradigmas da programação?

É importantíssimo saber usar os paradigmas da programação para tornar-se um programador mais completo e mais capaz de atender a uma larga gama de necessidades. É com eles que você poderá fazer uma diversidade imensa de projetos com qualidade e agilidade, o que sem dúvidas te tornará um desenvolvedor mais valorizado pelo mercado e muito mais procurado pelas empresas de desenvolvimento.

Os paradigmas da programação são importantes também porque são modelos de desenvolvimentos que já foram muito bem estudados e documentados. Você não precisa extrair da sua cabeça as ideias de qual a melhor forma de criar algo; você pode seguir padrões preestabelecidos, o que facilita o seu aprendizado e também a execução do projeto. Isso soluciona um problema muito comum entre programadores iniciantes: por não saber usar aquilo que já foi descoberto antes, eles têm de reinventar a roda antes de criar programas expressivos.

Nem Newton inventou o seu cálculo do nada! Pelo contrário, ele mesmo admitiu ter caminhado nos ombros de gigantes. É por isso que é importante que um programador conheça bem os conceitos que já foram criados pelos que vieram antes dele. Com isso, sua qualidade como programador encontra um grande benefício; e é então que você consegue grandes progressos em seus trabalhos.

Além disso, algumas linguagens foram criadas para trabalhar com determinados paradigmas. Java, por exemplo, como veremos à frente, é feito para a programação orientada a objetos; JavaScript, como esse artigo mostra, já é capaz de atender a quase todos os sabores. Por isso, por vezes, para aprender alguma linguagens precisamos saber também o paradigma da programação atrelado a ela!

Mas, afinal de contas, quais são os paradigmas da programação existentes? É o que veremos a seguir!

Paradigma Imperativo

O primeiro paradigma da programação que iremos abordar é o paradigma imperativo. Ele é o mais básico de todos, e, também, o primeiro a ser desenvolvido. Para entendê-lo, basta imaginar um imperador: ele dita as ordens e os seus funcionários apenas seguem enfileirados, sem buscar entender o que está acontecendo. Eles apenas cumprem essas ordem.

E, com isso, é bastante simples de se entender. Caso você algum dia tenha programado em algumas linguagens básicas de algoritmos como Algol, que é realmente bem simples, então certamente já se deparou com a programação imperativa.

Ela consiste na criação de um sistema que parece com uma trilha. O seu código deve seguir em linha reta, do início ao fim, e fazer tudo na ordem desejada. Desta forma, ele recebe uma determinada entrada e irá retornar uma saída, ou então executar uma rotina de atividades; de toda forma, ele é realmente bastante simples. Por ser assim tão básico, quase toda linguagem é capaz de suportar códigos assim, até certo ponto.

Ela é, então, recomendada para projetos mais simples e que não vão precisar de tanta escalabilidade e nem de muita dinamicidade de dados. Como todos os códigos são feitos em um único bloco reto, esta é uma forma de programar que torna o programa pouco legível; por isso, só se usa esse tipo de programação quando se trata de coisas bastante básicas.

Paradigma Declarativo

O segundo paradigma da programação, o da programação declarativa, já é um pouco mais complicado de se entender. Ele se trata, basicamente, de uma programação em que você apenas declara tudo aquilo que deve ser feito. Ou seja, você diz ao seu código que tal e tal rotinas devem ser feitas, determina o que ele fará com as informações que entraram e o que ele deverá retornar, e com isso determinar o andamento do todo.

No entanto, o seu código não precisa determinar como esse resultado será atingido. As abstrações da linguagem é que devem tomar conta disso; o programador apenas foca no que será construído. É, por isso, algo bastante confuso de se entender de início, mas que, ao ver os detalhes, percebe-se que faz sentido.

Um dos exemplos mais fáceis de se entender dessa programação é o SQL. Nele, o seu código trata apenas de dizer: “banco de dados, faça isso, isso e aquilo. Eu quero, também, que você me retorne essa ou aquela informação. Por fim, se algo acontecer na tabela X, modifique um valor na tabela Y”.

Exemplo da criação de uma tabela em PostgreSQL

É, então, notável que o programador não tem muita preocupação com como será feito. O que importa apenas é ser feito! É nisso que se baseia a programação declarativa: declara-se o que deve ocorrer, e, de seguido, ocorre de fato. Outros exemplos conhecido desse paradigma são o HTML (que sob hipótese alguma é uma linguagem de programação!!!), e também o Haskell.

Paradigma Funcional

O terceiro paradigma da programação, o da programação funcional, tem um nome bastante explícito e direto. Ele trata de um desenvolvimento que gira em torno do uso e aplicação de funções (por isso funcional). É nesse sentido que ela se distingue da programação imperativa, que tem seu foco na mudança de estados da aplicação.

Para entender todo esse desenvolvimento funcional, pensemos em equações. O matemático, para chegar a um resultado, deve seguir uma série de funções. Como elas funcionam é algo pensado depois; antes, é preciso saber quais funções utilizar. De maneira semelhante ocorre com a programação funcional: cria-se funções que se relacionam entre si e que podem ser usadas como parâmetros umas com as outras, desta forma criando um fluxo da aplicação que visa chegar ao resultado.

Por ter esse funcionamento semelhante ao da matemática, esse paradigma acaba sendo usado bastante por linguagens que lidam com matemática pesada. Ela encontra também bastante uso no desenvolvimento de softwares comerciais como Erlang, R, Mathematica e XSLT. O paradigma funcional trouxe ainda uma grande inovação para a programação, que foi o cálculo lambda, e também influenciou linguagens como Haskell, OCaml, F# e Elixir.

Paradigma Lógico

O quarto paradigma da programação, o chamado paradigma lógico, trata de uma espécie de programação que é totalmente diferente das demais. É bastante contra intuitivo, mas o seu nome diz totalmente do que o paradigma se trata: essa espécie de programação traz um desenvolvimento orientado inteiramente à lógica matemática. Com ela, usa-se todas aquelas proposições de “se e somente se”, “tais proposições implicam nisso”, e assim vai.

Esse paradigma é, portanto, utilizado em desenvolvimentos que requisitam uma lógica sólida e firme, como nas áreas de inteligência artificial, processamento de linguagem natural, criação de sistemas especialistas e prova de teoremas, dentre outros. De longe, a linguagem de programação mais popular para esse paradigma é a Prolog, que é uma evolução da Planner, uma linguagem desenvolvida por volta da década de 60.

Para dar um norte do funcionamento desta linguagem, um programa tem seu início pela criação de fatos, os quais serão entendidos pelo código como tendo valor de verdade de maneira inquestionável. Então, a partir dessa série de proposições verdadeiras, criamos diferentes proposições lógicas de modo a chegar a um resultado final, e nisso manter o fluxo da aplicação. É por isso que esse paradigma é bastante usado em programações que dependem pensadamente desta espécie de lógica, como, por exemplo, é o processamento de linguagem natural. Se até para nós, humanos, às vezes é difícil de entender o que alguém fala, imagine para uma máquina, que não chega a ter conhecimento real de todos os signos utilizados!

Paradigma Orientado a Objetos

O quinto paradigma da programação, talvez o mais popular, é o da programação orientada a objetos. Ela surgiu como resposta a uma necessidade de se ter uma ferramenta de desenvolvimento que fosse segura, ágil e escalável para fins comerciais, mas só se tornou popular depois que o Java se difundiu no mercado, embora esta tenha surgido na década de 60.

Ela se baseia em três grandes pilares, que são a herança, o polimorfismo e o encapsulamento. Nesta programação, criamos classes e objetos, que são entidades em nosso código, e as explicamos como elas devem se relacionar entre si. Com isso, nessas relações, por vezes uma classe é criada como derivação de outra; a elas, chamamos de “classes filhas”. Desta forma, ocorre a herança: ela herda o código da classe-pai, tendo os mesmos métodos (funções) e atributos (variáveis internas), sem que precisemos ativamente codificar essa herança.

Além disso, por vezes, uma classe se comporta de maneiras diferentes dependendo da forma como a chamamos. Graças a isso, objetos diferentes se integram e se modificam entre si ao longo do código, no fenômeno que damos o nome de polimorfismo; e, por fim, com o encapsulamento, garantimos que uma classe não conheça as propriedades de outra, o que separa com muita clareza o que faz parte de um objeto ou não.

Hoje em dia, 9 das 10 linguagens de programação mais populares do mundo suportam códigos em POO. Amplamente utilizada no desenvolvimento de softwares comerciais e de servidores back-end, podemos utilizar, além do Java, JavaScript (especialmente com a ferramenta TypeScript), C++, C#, Python, Ruby e outros na programação orientada a objetos. Bastante versátil, é uma legítima queridinha do mercado!

Paradigma Orientado a Eventos

Por fim, temos o paradigma da programação orientada a eventos. Essa é também uma forma de programação bastante distinta das demais, pois que ela não depende de entidades internas ao código, mas sim de ocorrências externas. É bastante utilizada, por exemplo, no desenvolvimento de jogos: o usuário é quem dá a entrada do que deve ocorrer, e, então, o código reage.

Quando o usuário aperta o botão para que seu personagem corra para a frente, é preciso que o código entenda esse evento e reaja à altura. É por isso que se chama orientada a eventos: com base no que estiver ocorrendo com a GUI (Graphical User Interface, a interface gráfica com a qual o usuário interage), o seu código deve reagir e mandar diferentes respostas de volta. Para tanto, a aplicação espera constantemente a entrada de novos dados, sempre fazendo leituras; e, por vezes, mesmo se não houver uma nova entrada, é preciso que haja uma reação! Pense naqueles jogos que, quando seu boneco fica estático por muito tempo, ele começa a agir de forma impaciente.

A priori, não temos linguagens que sejam “feitas” para a orientação a eventos. No entanto, algumas são mais apropriadas para essa espécie de programação. São elas: C#, Visual Basic e Delphi. Existem também design patterns que podemos usar para diversas linguagens e que facilitam essa resposta a eventos, que chamamos de observable – isso facilita, por exemplo, o uso do Java na programação orientada a eventos. Com isso, nota-se que esse paradigma bastante peculiar é, também, bastante versátil: ele nem chega a ter uma linguagem própria!

Conclusão

O conhecimento dos distintos paradigmas da programação, mesmo que em um saber superficial, é fundamental para todo bom programador. São essas diferenças entre nível de estudo e de saber teórico na nossa área que separam não só os programadores juniores dos seniores, mas também os bons dos melhores. É a cereja do bolo!

Por isso, se você almeja ser um profissional de destaque em seu meio, é crucial conhecer o máximo possível do seu ofício, de forma a facilitar não só o seu desenvolvimento, como também a torná-lo mais seguro e reconhecível. De que serve um código que, apesar de rodar, ninguém entende? Se ele não for reconhecível, então não é possível mantê-lo novo e limpo de bugs. E, assim, a empresa cai.

Por isso, esse conhecimento básico que demos aqui sobre os paradigmas servirá mais como um motivador para procurar aquele que mais lhe interessar do que como um meio de instrução em si. Esperamos de coração que você, através do que foi lido, venha a pesquisar e se aprofundar nos conceitos, de forma a se tornar um profissional cada vez mais qualificado e requisitado no mercado.

O progresso é constante, mesmo que seja lento!

Leave a Reply