Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.:...

25
Paradigmas de Programação - prof Gláucy a Carreiro Boechat 1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat [email protected] Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática

Transcript of Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.:...

Page 1: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 2: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 3: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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”

Page 4: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 5: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 6: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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, ...

Page 7: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 8: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 9: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 10: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

Paradigmas de Programação - prof Gláucya Carreiro Boechat

10

Modelo Computacional do Paradigma Imperativo

Entrada Programa Saída

Estado

Page 11: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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”

Page 12: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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)

Page 13: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 14: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 15: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 16: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 17: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 18: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 19: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

Paradigmas de Programação - prof Gláucya Carreiro Boechat

19

Modelo Computacional do Paradigma Funcional

Entrada Programa Saída

Page 20: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 21: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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, ...

Page 22: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

Paradigmas de Programação - prof Gláucya Carreiro Boechat

22

Modelo Computacional do Paradigma Lógico

Entrada Programa Saída

Page 23: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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

Page 24: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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#

Page 25: Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Universidade.

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