O Paradigmas das linguagens de programação
Por: Kleber.Oliveira • 27/11/2018 • 1.122 Palavras (5 Páginas) • 307 Visualizações
...
Com o desenvolvimento da tecnologia, surgiu um novo conceito: o paralelismo,
isto é, a possibilidade de executar-se mais de uma tarefa paralelamente, seja por meio de
vários núcleos processadores, seja por meio de um só, executando-se assim um
paralelismo emulado.
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.
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.
4.2 Programação declarativa
A 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.
Sendo assim, apresenta-se como um paradigma oposto ao paradigma imperativo, uma
vez que se preocupa com “o que deve fazer”, em vez de preocupar-se com “como deve
ser feito”.
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.
4.2.1 Programação funcional
A programação funcional busca descrever o programa em torno de funções.
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#.
Vantagem: 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.
Desvantagem: 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.
4.2.2 Programação lógica
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.
Duas linguagens de programação foram fundamentais para este paradigma,
criando-se a partir delas duas famílias de linguagens lógicas: Planner e Prolog.
Dentre as linguagens de programação derivadas de Planner, podemos destacar
QA-4, Popler, Conniver e QLisp.
Já dentre as linguagens de programação derivadas de Prolog, podemos apontar
Mercury, Visual Prolog, Oz e Frill.
Vantagem: muito úteis em problemas que possam ser resolvidos por meio de
dedução ou inferência.
Desvantagem: pode haver explosão combinatorial da base de conhecimento
levando a grande desperdício de recursos computacionais.
4.2.3 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. Em inglês, denomina-se
Constraint Programming.
Seu uso pode ser interessante em problemas cuja solução possa, de certa forma,
ser restrita a um número de valores. Tal tipo de problema é conhecido como CSP
(Constraint Satisfaction Problem), no qual são dados:
∙ Um conjunto finito de variáveis;
∙ Uma função que mapeia cada variável a um domínio finito;
∙ Um conjunto finito de restrições.
4.3 Linguagens
...