Há uma grande
preocupação quanto ao
detalhamento do
funcionamento de
programas.
Programação Estruturada
Vantagens
Geralmente são
linguagens mais fáceis
de aprender, uma vez
que envolve um menor
número de conceitos
distintos do que
aqueles apresentados
por outros paradigmas.
Desvantagens
Apresentam maiores
dificuldades na
representação de soluções
para certos “problemas do
mundo real”, que
geralmente são mais
complexos.
Na programação estruturada, o programador deve
descrever todo o seu programa por meio de instruções,
estruturas de dados e subrotinas e qualquer programa
pode ser reduzido a três tipos de estruturas: sequência,
decisão e interação. Algumas das linguagens de
programação consideradas estruturadas são: Pascal, C,
COBOL e Fortran.
Programação orientada a objetos
Vantagens
Graças aos novos conceitos
introduzidos por meio da
orientação a objetos,
conseguiu-se uma melhor
organização do código,
geralmente separado em
classes e bibliotecas.
Desvantagens
A programação orientada
a objetos apresenta um
maior número de
conceitos e abstrações
necessárias, quando
comparada à
programação estruturada,
o que pode tornar seu
aprendizado um pouco
mais complexo.
Na programação orientada a objetos, compreende-se a
necessidade de compreender o problema por meio da relação
existente entre as diversas entidades que participam do mesmo,
sendo assim, a solução para o problema deve ser implementada
levando-se em consideração os objetos e suas interações que
sejam pertinentes ao universo do problema. Alguns exemplos de
linguagens orientadas a objetos são C++, Object Pascal e Java.
Programação concorrente
Vantagens
Aumento do
desempenho, na medida
em que melhor se utiliza
de todos os recursos
computacionais
disponíveis;
possibilidade de melhor
modelagem dos
programas, pois
determinados
problemas
computacionais são
concorrentes por
natureza.
Desvantagens
Programação mais complexa,
com possíveis erros
decorrentes da própria
concorrência; difícil depuração
devido ao aspecto
não-determinístico que a
solução pode tomar.
A programação concorrente visa estudar e propor como melhor
desenvolver programas visando esse cenário, onde processos executam
simultaneamente e concorrem por recursos, como a memória e o próprio
processamento. Várias linguagens oferecem suporte à programação
concorrente, como Java, C#, C++, C e Object Pascal. Como se pode
perceber, uma mesma linguagem pode oferecer suporte a mais de um
subparadigma.
Programação declarativa
Trata-se de uma abordagem
focada em descrever o que o
programa deve fazer e menos
em como seus procedimentos
devem funcionar.Na
programação declarativa, não
há a ideia de estado do
programa, como ocorre na
programação imperativa.
Dentro do paradigma
declarativo, podemos
identificar a programação
funcional, a programação
lógica e a programação
restritiva.
Programação funcional
Vantagens
Há uma maior
transparência
referencial, uma vez
que todo o programa
é composto por
funções, tornando-se
mais fácil efetuar uma
inspeção do código.
Desvantagens
Não oferece alocação
explícita de memória ou
declaração explícita de
variáveis, necessários
para a resolução de
muitos problemas reais.
O código-fonte de um programa escrito em linguagem
funcional pode ser interpretado como um conjunto de
funções que recebem zero ou mais argumentos como entrada
e retornam sempre um valor em sua saída. Cada função,
então, deve realizar um conjunto de operações sobre os
parâmetros de entrada a fim de obter a saída. Algumas
linguagens que se utilizam dessa abordagem são APL, Lisp,
ML, Haskell, OCaml e F#.
Programação lógica
Desvantagens
Pode haver explosão
combinatorial da base de
conhecimento levando a
grande desperdício de
recursos computacionais.
Vantagens
Muito úteis em problemas
que possam ser resolvidos
por meio de dedução ou
inferência.
Esta é a abordagem da programação que faz
forte uso da lógica matemática para a resolução
de problemas, geralmente por meio de valores
ou objetos e relações entre os mesmos,
formulando-se assim proposições e regras.
Programação restritiva
A programação restritiva
nasceu da programação lógica
(motivo pelo qual muitos
autores apontam-na como
parte da programação lógica).
Ela se utiliza de restrições na
definição de relações entre as
variáveis.
Linguagens de programação multiparadigma
Na verdade, muitas linguagens permitem mais de um
subparadigma dentro de um mesmo paradigma, por exemplo, a
linguagem C++ permite tanto a programação estruturada, quanto à
orientada a objetos e a programação concorrente. Entretanto, há
um número bem mais reduzido de linguagens que permitem
paradigmas realmente distintos, como a linguagem Oz. A principal
vantagem de tais linguagens é que o programador pode utilizar o
paradigma que preferir em sua implementação. Entretanto, tem
como desvantagem o fato de que algoritmos que utilizem mais de
um paradigma em sua implementação podem ter sua
compreensibilidade afetada.