Universidade Federal Rural de Pernambuco
Departamento de Estatística e Informática
Paradigmas de Programação
Prof.: Gláucya Carreiro Boechat
[email protected]
Paradigmas de Programação prof Gláucya Carreiro Boechat
1
Objetivos

Fornecer ao aluno os conceitos fundamentais
sobre linguagens de programação,
permitindo-o ter parâmetros para selecionar
entre as diversas linguagens de
programação qual a mais adequada à sua
necessidade
Paradigmas de Programação prof Gláucya Carreiro Boechat
2
Paradigma
Etimologia:
 A palavra paradigma tem origem:



Na palavra grega παράδειγμα (paradeigma) que
significa “padrão” ou “exemplo”
Na palavra grega παραδεικνύναι (paradeiknunai)
que significa “demonstrar”.
Fonte: “http://en.wikipedia.org/wiki/Paradigm”
Paradigmas de Programação prof Gláucya Carreiro Boechat
3
Paradigma de programação



Um paradigma de programação é um estilo
paradigmático de programar
Um paradigma de programação (e
determina) a visão que o programador tem
da execução de um programa
Exemplos


Orientada a objetos
Funcional
Paradigmas de Programação prof Gláucya Carreiro Boechat
4
O que caracteriza uma Linguagem de
Programação?



Gramática e significado bem definidos
Implementável (executável) com eficiência
‘‘aceitável’’
Universal


Qualquer problema deve conseguir ser expresso
Natural para expressar problemas

Aplicável ao domínio da linguagem
Paradigmas de Programação prof Gláucya Carreiro Boechat
5
Aspectos do estudo de linguagens

Sintaxe


Semântica


Significado
Pragmática


Gramática (forma)
Metodologias
Processadores/Ferramentas

Compiladores, interpretadores, editores,
ambientes visuais, ...
Paradigmas de Programação prof Gláucya Carreiro Boechat
6
Por que tantas linguagens?




Propósitos diferentes
Avanços tecnológicos
Interesses comercias
Cultura e background científico
Paradigmas de Programação prof Gláucya Carreiro Boechat
7
O que é um paradigma de programação?


Modelo, padrão ou estilo de programação
suportado por linguagens que agrupam
certas características comuns
A classificação de linguagens em paradigmas
é uma conseqüência de decisões de projeto
que impactam radicalmente a forma na qual
uma aplicação real é modelada do ponto de
vista computacional
Paradigmas de Programação prof Gláucya Carreiro Boechat
8
O Paradigma Imperativo


Programas centrados no conceito de um
estado (modelado por variáveis) e ações
(comandos) que manipulam o estado
Também conhecido como paradigma
procedural


Inclui subrotinas ou procedimentos como
mecanismo de estruturação
Primeiro paradigma a surgir

Ainda é muito utilizado
Paradigmas de Programação prof Gláucya Carreiro Boechat
9
Modelo Computacional do Paradigma
Imperativo
Entrada
Programa
Saída
Estado
Paradigmas de Programação prof Gláucya Carreiro Boechat
10
O Paradigma Imperativo

Vantagens




Eficiência
Modelagem “natural” de aplicações do mundo real
Paradigma dominante e bem estabelecido
Desvantagens

Relacionamento indireto entre E/S



Difícil legibilidade
Erros introduzidos durante manutenção
Descrições demasiadamente operacionais
o “como” e não “o que”
Paradigmas de Programação prof Gláucya Carreiro Boechat
focalizam
11
O Paradigma Orientado a Objetos

Não é um paradigma no sentido estrito


Modificação na metodologia de concepção e
modelagem do sistema


Subclassificacão do imperativo
A grosso modo, uma aplicação é estruturada em
módulos (classes) que agrupam um estado
(variáveis) e operações (métodos)
Classes podem ser estendidas e/ou usadas
como tipos (objetos)
Paradigmas de Programação prof Gláucya Carreiro Boechat
12
Modelo Computacional do Paradigma
Orientado a Objetos
Entrada
Entrada
Programa
Programa
Saída
Saída
Estado
Estado
Entrada
Entrada
Programa
Programa
Saída
Estado
Estado
..
.
..
.
Saída
...
Paradigmas de Programação prof Gláucya Carreiro Boechat
Entrada
Programa
Saída
Estado
..
.
13
O Paradigma Orientado a Objetos

Vantagens




Todas as do estilo imperativo
Classes estimulam projeto centrado em dados:
modularidade, reusabilidade e extensibilidade
Aceitação comercial crescente
Desvantagens

Semelhantes aos do paradigma imperativo, mas
amenizadas pelas facilidades de estruturação
Paradigmas de Programação prof Gláucya Carreiro Boechat
14
O Paradigma Orientado a Aspectos

Não é um paradigma no sentido estrito


Sempre acoplado a um outro paradigma
Nova técnica de modularização:



Para “requisitos” que afetam várias partes de uma aplicação
Aplicação é estruturada em módulos (aspectos) que
agrupam pontos de interceptação de código (pointcuts) que
afetam outros módulos (classes) ou outros aspectos,
definindo novo comportamento (advice)
Para linguagens OO, aspectos podem ser estendidos e/ou
usados como tipos
Paradigmas de Programação prof Gláucya Carreiro Boechat
15
Modelo Computacional do Paradigma Orientado
a Aspectos
Aspecto
Entrada
Entrada
Aspecto
Programa
Programa
Saída
Saída
Estado
Estado
Entrada
Entrada
Programa
Programa
Saída
Estado
Estado
..
.
Saída
...
..
.
Paradigmas de Programação prof Gláucya Carreiro Boechat
Entrada
Programa
Saída
Estado
..
.
16
O Paradigma Orientado a Aspectos

Vantagens


Todas as do paradigma base
Modularização de conceitos que o paradigma base não
consegue



Em especial, aqueles ligados a requisitos não funcionais
Aumenta a extensibilidade e o reuso
Desvantagens



Semelhantes aos do paradigma base
Ainda é preciso diminuir a relação entre o módulo afetado
e aspectos
Problemas de conflito entre aspectos que afetam o mesmo
módulo
Paradigmas de Programação prof Gláucya Carreiro Boechat
17
O Paradigma Funcional




Programas são funções que descrevem uma
relação explícita e precisa entre E/S
Estilo declarativo: não há o conceito de
estado nem comandos como atribuição
Conceitos sofisticados como polimorfismo,
funções de alta ordem e avaliação sob
demanda
Aplicação: prototipação em geral e IA
Paradigmas de Programação prof Gláucya Carreiro Boechat
18
Modelo Computacional do Paradigma
Funcional
Entrada
Programa
Paradigmas de Programação prof Gláucya Carreiro Boechat
Saída
19
Paradigma Funcional

Vantagens

Manipulação de programas mais simples:




Prova de propriedades
Transformação (exemplo: otimização)
Concorrência explorada de forma natural
Desvantagens



“O mundo não é funcional!”
Implementações ineficientes
Mecanismos primitivos de E/S e formatação
Paradigmas de Programação prof Gláucya Carreiro Boechat
20
O Paradigma Lógico




Programas são relações entre E/S
Estilo declarativo, como no paradigma
funcional
Na prática, inclui características imperativas,
por questão de eficiência
Aplicações: prototipação em geral, sistemas
especialistas, banco de dados, ...
Paradigmas de Programação prof Gláucya Carreiro Boechat
21
Modelo Computacional do Paradigma
Lógico
Entrada
Programa
Paradigmas de Programação prof Gláucya Carreiro Boechat
Saída
22
Visão Crítica do Paradigma Lógico


Vantagens
Em princípio, todas do paradigma funcional
Permite concepção da aplicação em um alto nível
de abstração (através de associações entre E/S)
Problemas
Em princípio, todos do paradigma funcional
Linguagens usualmente não possuem tipos, nem
são de alta ordem
Paradigmas de Programação prof Gláucya Carreiro Boechat
23
Um breve histórico
1950........................................................................................................
FORTRAN
1960.......................ALGOL-60...........COBOL......LISP.........................
SIMULA
ALGOL-68 PL/I BASIC
1970..................Pascal............................................................................
Smalltalk
C
PROLOG
Modula-2
ML
1980....................Ada...........DBASE-II..................................................
Miranda
Eifell C++
1990.....................................................................Haskell..........Godel...
Delphi Java C#
Erlang F#
Orientado a objetos
Imperativo
Paradigmas de Programação prof Gláucya Carreiro Boechat
Funcional
Lógico
24
Bibliografia
1.
2.
3.
4.
5.
Sebesta, Robert W. Conceitos de Linguagens de Programação.
Bookman, 2003
Sebesta, Robert W. Concepts of Programming Languages.
Addison Wesley, 2005
Watt, David A. Programming Language Design Concepts. John
Wiley, 2004
Toscani, Simão e Price, Ana Maria de Alencar. Implementação
de Linguagens de Programação. Sagra-Luzzatto, 2005
Melo, Ana Cristina Vieira de e Silva, Flávio Soares Correa da.
Princípios de Linguagens de Programação
Paradigmas de Programação prof Gláucya Carreiro Boechat
25
Download

Paradigmas de Programação - Centro de Informática da UFPE