Paradigmas de Programação
1 - Introdução
Diferentes tarefas de programação podem ser resolvidas de maneiras diferentes: você pode precisar escrever uma função ou criar uma classe separada com métodos e assim por diante. Todas essas variantes são combinadas em diferentes abordagens de programação, também chamadas de paradigmas. A seguir, revisaremos o conceito de paradigmas e analisaremos dois paradigmas principais: imperativo e declarativo e seus tipos.
Quase todas as línguas modernas são multiparadigmáticas. Eles combinam facilmente as capacidades das abordagens imperativa e declarativa. No entanto, na seção sobre cada paradigma, daremos uma lista de linguagens onde, entre outros paradigmas, o discutido na seção também é implementado.
2 - Paradigma Imperativo
O paradigma imperativo é um dos mais antigos paradigmas de programação. Está intimamente relacionado com a arquitetura da máquina. Um programa imperativo é semelhante às ordens expressas pelo modo imperativo nas línguas naturais. É uma sequência de instruções que o processador deve executar passo a passo. O foco principal desse paradigma é como atingir um objetivo. O paradigma consiste em várias instruções e, após a execução de todas, o resultado é armazenado ou exibido.
Por exemplo, você deseja exibir a frase "Olá, <nome do usuário>!" na tela. Como o programa deve fazer isso? Através das seguintes etapas:
- solicitar o nome de usuário
- guardar o nome de usuário
- exibir o resultado esperado, isto é, a frase "Olá, <nome do usuário>!"
A programação imperativa é dividida em três grandes categorias: Paradigma de programação procedural , Programação orientada a objetos e Abordagem de processamento paralelo.
3 - Programação de Programação Procedural
O paradigma de programação procedural é baseado no conceito de chamadas de procedimento, nas quais as instruções são estruturadas em procedimentos também conhecidos como sub-rotinas ou funções. Eles são uma lista de instruções para dizer ao computador o que fazer passo a passo. Em outras palavras, o computador pega os dados de entrada e os processa sequencialmente, lembrando-se de cada nova alteração.
A programação procedural é adequada para programação de uso geral para concluir tarefas comuns. Então, isso pode ser um pequeno problema computacional, como calcular um fatorial, ou encontrar a área de uma figura, ou exibir alguma informação/frase como "Olá, mundo!". Além disso, o código pode ser reutilizado em diferentes partes do programa, sem a necessidade de copiá-lo.
As linguagens de programação que implementaram o paradigma de Programação Processual são C, Java, C++, Kotlin, ColdFusion e Pascal.
4 - Programação Orientada a Objetos
A programação orientada a objetos ou POO é o paradigma em que o programa é escrito como uma coleção de classes. Cada classe tem instâncias chamadas de objetos.
Uma classe é uma forma de descrever uma entidade em geral, definindo o estado usual e o comportamento que depende desse estado, bem como as regras usuais para interagir com essa entidade. Formalmente, uma classe é vista como um conjunto de dados como campos, atributos, membros de classe e funções, ou seja, métodos para trabalhar com eles.
Por exemplo, temos uma entidade gato e queremos descrevê-la usando uma classe. Assim, o gato será um objeto da classe Cat correspondente . Um gato tem alguns atributos, por exemplo, rabo, patas, garras, focinho, orelhas e bigodes. O comportamento de um gato é o que ele costuma fazer, por exemplo, ele pode correr, pular, miar, comer e arrancar o papel de parede. Todos estes serão métodos de gato .
OOP pode lidar com quase todos os tipos de problemas comuns da vida real em que você precisa modelar objetos típicos e trabalhar com eles.
As linguagens de programação que implementaram o paradigma OOP são Ruby, Kotlin, Java, C++, Python, Simula (a primeira linguagem OOP), Smalltalk, Visual Basic .NET e Objective-C.
Nota-se alguma sobreposição entre as listas de linguagens para o paradigma procedural e OOP. Isso não significa que todas as linguagens OOP são procedurais e vice-versa. Assim como foi dito antes, a maioria das linguagens de programação modernas pode trabalhar com vários paradigmas.
5 - Abordagem de Processamento Paralelo
O processamento paralelo ajuda a reduzir o tempo de execução da instrução. Ele faz isso compartilhando ou paralelizando instruções entre vários processadores. O significado da abordagem pode ser resumido em uma frase: "dividir e conquistar". Exemplos de linguagens de programação que suportam processamento paralelo são NESL (uma das mais antigas) e C/C++ (também suportada devido a algumas funções de biblioteca).
6 - Paradigma Declarativo
A programação declarativa é um paradigma de programação no qual é importante especificar o problema e o resultado esperado de sua solução. Ou seja, em contraste com o paradigma imperativo, onde é necessário responder à pergunta "Como fazer isso?" você precisa fazer as perguntas "O que precisa ser feito?" e "Qual será o resultado do trabalho?". Portanto, em vez de fornecer instruções passo a passo, você diz ao sistema o que precisa e deixa que ele encontre uma solução.
A programação declarativa é dividida em tipos de paradigma lógico, funcional e de banco de dados.
7 - Paradigma de Programação Lógica
A programação lógica é um paradigma de programação fortemente baseado na lógica formal. Qualquer programa escrito em uma linguagem de programação lógica é um conjunto de sentenças em uma forma lógica que expressa fatos e regras sobre uma determinada área do problema.
Portanto, as declarações básicas da programação lógica são as seguintes:
- Fatos são afirmações fundamentais sobre o domínio do problema, como "Sócrates é um homem".
- As regras permitem fazer inferências sobre os fatos do domínio ("Todos os homens são mortais.")
- As consultas são questões sobre esse domínio ("Sócrates é mortal?")
Em geral, a tarefa aqui é encontrar a resposta para a consulta com base em fatos e regras.
As principais famílias de linguagens de programação lógica incluem Prolog, Answer Set Programming (ASP) e Datalog.
8 - Paradigma de Programação Funcional
A programação funcional é um paradigma de programação no qual o processo de computação é interpretado como a computação dos valores das funções. A função, neste caso, é semelhante a uma função matemática. Ou seja, uma função na qual a entrada é um array que não é alterado e a saída é um novo array com novos dados. Isso torna uma função matemática diferente de uma função na programação procedural, onde uma função é uma sequência de ações que alteram os dados originais.
Aqui está um exemplo simples: você pode ter uma função que recebe uma lista de números como entrada e retorna uma nova lista com os quadrados desses números. Isso não altera a lista original de números.
As linguagens de programação que implementaram o paradigma de programação Funcional são JavaScript, Haskell, Scala, Erlang, Lisp, ML, Clojure, OCaml e F#.
9 - Paradigma de Pogramação de Banco de Dados
Esta metodologia de programação é baseada no trabalho com dados. Os dados são armazenados no banco de dados e as consultas são feitas a esse banco de dados em uma linguagem especial, por exemplo, SQL. Com esses idiomas, você pode acessar os dados para filtragem, transformações, cálculo de estatísticas e assim por diante. As instruções do programa são definidas por dados, em vez de uma série de etapas embutidas em código.
O programa de banco de dados é o coração do sistema de informações de negócios, permitindo a criação de arquivos, entrada de dados, atualização, consulta e funções de relatório.
10 - Conclusão
Resumindo,
- Diferentes abordagens para a criação de programas são chamadas de paradigmas.
- Existem dois paradigmas principais de programação: imperativo e declarativo.
- O paradigma imperativo se concentra em alcançar um resultado usando instruções passo a passo que processam os dados sequencialmente.
- O paradigma imperativo inclui o paradigma de programação procedural, a programação orientada a objetos e a abordagem de processamento paralelo.
- O paradigma declarativo concentra-se na tarefa e tenta obter um resultado esperado.
- O paradigma declarativo inclui os paradigmas lógico, funcional e de banco de dados.
Lembre-se que a maioria das linguagens de programação modernas podem trabalhar com vários paradigmas. Nas seções acima foram listados linguagens que são comumente associadas a algum paradigma. Mas isso não significa que eles só podem ser usados com um determinado paradigma.