Quais são os paradigmas de programação mais importantes?

Entrar no mundo da programação é entrar em um mundo real cheio de xxxx e possibilidades.

Para os não iniciados, ou mesmo novatos na área, muitos conceitos podem causar alguma confusão, incluindo paradigmas de programação.

Para diferentes tipos de soluções e diferentes linguagens, os paradigmas ainda confundem muitos alunos.

Para te ajudar, no conteúdo de hoje vamos falar mais sobre essa definição, a quem esses paradigmas se aplicam e quais são suas respectivas linguagens primárias.

Vamos lá?

O que é paradigma de programação?

Para entender o conceito de paradigmas de programação, usaremos uma analogia mais próxima da vida real.

Imagine que para resolver um problema, você pode escolher diferentes soluções.

Afinal, todos eles servirão ao mesmo propósito, mas cada um deles requer um esforço diferente e uma mentalidade lógica diferente para resolver o mesmo problema.

Por exemplo, se você precisar aquecer uma certa quantidade de água, pode fazê-lo no fogão ou no micro-ondas.

Na programação, também podemos usar métodos diferentes para atingir o mesmo objetivo.

A estas metodologias, damos o nome de paradigmas.

Por que aprender os paradigmas de programação é importante?

A primeira é que isso faz de você um desenvolvedor melhor, uma melhor compreensão desses tipos de teorias permite que você pense diretamente sobre o design de código, você possa entender melhor a linguagem e ler nas entrelinhas do código.

Outro ponto relacionado é que adiciona um diferencial competitivo ao seu perfil na seletividade do trabalho. Quando os recrutadores ouvem que você domina o assunto, isso agrega mais valor ao seu nome no processo, resultando em maior confiança na sua contratação.

Quais são os tipos de paradigmas?

Os principais paradigmas de programação se dividem basicamente em dois grupos, imperativos ou declarativos.

Crítico

O programador instrui a máquina como o processo deve ser calculado. No paradigma de programação imperativa, temos:

Programação Procedural

A programação procedural é uma ótima opção para programação de uso geral, que consiste em uma série de instruções que informam ao computador o que fazer passo a passo.

A maioria das linguagens de programação ensinadas nas universidades são procedurais, exemplos:

C
C++
Java
Pascal

Quando é recomendado usar programação procedural:

Quando há operações complexas que contêm dependências entre operações e quando os diferentes estados do aplicativo precisam ser claramente entendidos.
O programa é bastante único, com poucos elementos compartilhados.
O programa é estático e não se espera que mude muito ao longo do tempo.
Espera-se que nenhum ou apenas alguns recursos sejam adicionados ao projeto ao longo do tempo.
Eu recomendo a fonte original da qual obtive conselhos sobre quando usar programação procedural, incluindo as deficiências desse paradigma.

Programação Orientada ao Objeto

A Programação Orientada a Objetos (POO) é o paradigma de programação mais popular devido às suas vantagens, como a modularidade do código e a capacidade de relacionar problemas reais diretamente no código.

Nesse caso, os programas são escritos como coleções de classes e objetos para se comunicarem bem. A entidade menor e fundamental é o objeto, e todos os tipos de cálculos são feitos apenas no objeto.

É o paradigma mais popular e exigido pelas empresas e as principais linguagens que o implementam são:

PHP
Java
Ruby
C#
Python

Vale a pena utilizá-la quando:

Vários programadores trabalham juntos e não precisam saber tudo sobre cada componente.
Há muito código para compartilhar e reutilizar.
Espere muitas mudanças no projeto.
Computação Paralela
O paradigma de computação paralela consiste em instruções divididas em vários processadores.

Os sistemas de computação paralela permitem que muitos processadores executem programas em menos tempo, dividindo-os.

Linguagens que suportam processamento paralelo:

C
C++

Os métodos de computação paralela são geralmente recomendados nas seguintes situações:

Seu sistema tem várias CPUs ou processadores multi-core.
É necessário resolver problemas computacionais que podem levar dias para serem resolvidos.
Se você usa simulação de computador, inteligência artificial ou modelagem que requer muita computação dinâmica.
Declarativo

É quando o programador declara apenas as propriedades do resultado desejado, mas não informa à máquina como a computação relevante deve ser realizada. No grupo de paradigmas de programação declarativa, existem:

Paradigma de lógica de programação

A lógica aponta para paradigmas de programação que não consistem em instruções. Ele se baseia em fatos e usa tudo o que sabe para criar um cenário no qual todos esses fatos e termos são verdadeiros e apontam para algum objetivo.

Por exemplo, JavaScript é uma linguagem de programação, todas as linguagens de programação são importantes e, por inferência lógica, JavaScript é importante.

Linguagens com propriedades de lógica:

Absys
Ciao
Alice

É interessante usar o paradigma de programação lógica quando:

Você planeja trabalhar em projetos como prova de teoremas, sistemas de redução, sistemas de tipos entre outros.

Programação Funcional

O paradigma de programação funcional tem suas origens na matemática e é agnóstico de linguagem.

A base deste paradigma é realizar uma série de funções matemáticas. Você compõe seu programa com funções curtas. Todo o código está em uma função. Todas as variáveis ​​têm como escopo funções.

No paradigma de programação funcional, uma função não modifica nenhum valor fora do escopo da função, nem a função em si é afetada por nenhum valor fora do escopo.

Falamos muito sobre paradigmas de programaç ão funcional no Online Tech, e isso é uma das coisas que Marina Cabral da AWS queria aprender no início de sua carreira.

Linguagens que usam este paradigma:

Haskell
Scala
Racket
JavaScript
Ideal para usar quando:

Tem matemática envolvida diretamente na programação.

Paradigmas de programaçã o ajudam a reduzir a complexidade do programa. Todo desenvolvedor deve seguir uma abordagem paradigmática ao implementar seu código.

Vale a pena considerar seus prós e contras, colocá-lo em uma escala e verificar qual deles funciona melhor para o seu projeto.

Você perdeu algum exemplo importante não mencionado no artigo? Deixe seus comentários e nos conte quais você tem usado.