Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.:...
Transcript of Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.:...
Paradigmas de Programação - prof Gláucya Carreiro Boechat
1
Paradigmas de Programação
Prof.: Gláucya Carreiro Boechat [email protected]
Universidade Federal Rural de PernambucoDepartamento de Estatística e Informática
Paradigmas de Programação - prof Gláucya Carreiro Boechat
2
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
3
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
4
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
5
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
6
Aspectos do estudo de linguagens Sintaxe
Gramática (forma) Semântica
Significado Pragmática
Metodologias Processadores/Ferramentas
Compiladores, interpretadores, editores, ambientes visuais, ...
Paradigmas de Programação - prof Gláucya Carreiro Boechat
7
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
8
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
9
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
10
Modelo Computacional do Paradigma Imperativo
Entrada Programa Saída
Estado
Paradigmas de Programação - prof Gláucya Carreiro Boechat
11
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 focalizam
o “como” e não “o que”
Paradigmas de Programação - prof Gláucya Carreiro Boechat
12
O Paradigma Orientado a Objetos
Não é um paradigma no sentido estrito Subclassificacão do imperativo
Modificação na metodologia de concepção e modelagem do sistema 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
13
Modelo Computacional do Paradigma Orientado a Objetos
Entrada Programa Saída
Estado
......
......
Estado
Entrada Programa Saída
Estado
Entrada Programa Saída
Estado
Entrada Programa Saída
Estado
Entrada Programa Saída
Paradigmas de Programação - prof Gláucya Carreiro Boechat
14
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
O Paradigma Orientado a Objetos
Paradigmas de Programação - prof Gláucya Carreiro Boechat
15
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
16
Modelo Computacional do Paradigma Orientado a Aspectos
Entrada Programa Saída
Estado
......
......
Estado
Entrada Programa Saída
Estado
Entrada Programa Saída
Estado
Entrada Programa Saída
Estado
Entrada Programa Saída
AspectoAspecto
AspectoAspecto
Paradigmas de Programação - prof Gláucya Carreiro Boechat
17
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
18
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
19
Modelo Computacional do Paradigma Funcional
Entrada Programa Saída
Paradigmas de Programação - prof Gláucya Carreiro Boechat
20
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
21
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
22
Modelo Computacional do Paradigma Lógico
Entrada Programa Saída
Paradigmas de Programação - prof Gláucya Carreiro Boechat
23
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
24
Um breve histórico
Smalltalk C PROLOG
1980....................Ada...........DBASE-II..................................................
1990.....................................................................Haskell..........Godel...
1950........................................................................................................
FORTRAN1960.......................ALGOL-60...........COBOL......LISP.........................
SIMULA ALGOL-68 PL/I BASIC 1970..................Pascal............................................................................
Modula-2 ML
MirandaEifell C++
Delphi Java C#
Imperativo Funcional LógicoOrientado a objetos
Erlang F#Erlang F#
Paradigmas de Programação - prof Gláucya Carreiro Boechat
25
Bibliografia
1. Sebesta, Robert W. Conceitos de Linguagens de Programação. Bookman, 2003
2. Sebesta, Robert W. Concepts of Programming Languages. Addison Wesley, 2005
3. Watt, David A. Programming Language Design Concepts. John Wiley, 2004
4. Toscani, Simão e Price, Ana Maria de Alencar. Implementação de Linguagens de Programação. Sagra-Luzzatto, 2005
5. Melo, Ana Cristina Vieira de e Silva, Flávio Soares Correa da. Princípios de Linguagens de Programação