Paradigmas de Linguagens de Programa - PowerPoint PPT Presentation

About This Presentation
Title:

Paradigmas de Linguagens de Programa

Description:

Title: Orienta Author: Departamento de Inform tica Last modified by: Algusto Created Date: 10/25/1996 12:00:14 PM Document presentation format – PowerPoint PPT presentation

Number of Views:94
Avg rating:3.0/5.0
Slides: 39
Provided by: Departa2
Category:

less

Transcript and Presenter's Notes

Title: Paradigmas de Linguagens de Programa


1
Paradigmas de Linguagens de Programação
Augusto Sampaio acas_at_cin.ufpe.br http//www.cin.uf
pe.br/acas
Recife, primeiro semestre de 2015
2
Objetivos
  • Análise crítica de paradigmas e linguagens de
    programação
  • Visão geral dos paradigmas imperativo, orientado
    a objetos e funcional
  • Discutir alternativas de projeto de linguagens
  • Estudo de linguagens através de ambientes de
    execução (interpretação)

3
Tópicos a serem apresentados
  • Visão geral de linguagens e paradigmas
  • Uma linguagem de expressões e sua implementação
    em Java
  • Introdução à programação funcional
  • Implementando funções
  • Uma linguagem de comandos

4
Tópicos a serem presentados
  • Implementando estruturas de controle, I/O e
    atribuição
  • Procedimentos e passagem de parâmetros
  • Implementando procedimentos
  • Tipos abstratos de dados
  • Implementando tipos abstratos de dados e classes
  • Implementando subtipos e herança
  • Outros conceitos e paradigmas apresentados nos
    projetos

5
Metodologia de Ensino
  • A ênfase do curso é em conceitos
  • Java será utilizada como uma ferramenta prática
    de apoio
  • para ilustrar o paradigma OO
  • como meta-linguagem para construir
    interpretadores
  • Os conceitos estudados serão sedimentados através
    da implementação incremental de construções de
    linguagens dos diversos paradigmas

6
Avaliação
  • 2 projetos em equipe (de até 3 pessoas) a serem
    realizados durante o decorrer do curso, ou um
    único projeto de maior complexidade
  • Prova explorando aspectos conceituais e de
    implementação das construções
  • Os projetos valem 50 e a prova 50 da média final

7
Bibliografia
  • Conceitos e Paradigmas de Programação via Projeto
    de Interpretadores. Augusto Sampaio e Antônio
    Maranhão
  • Programming Language Design Concepts, David Watt
    and W. Findlay, John Wiley Sons
  • Programming Language Concepts and Paradigms,
    David Watt, Prentice Hall
  • Programming Language, An Interpreter-Based
    Approach, Samuel Kamin, Addison Wesley
  • http//www.mozart-oz.org/
  • Concepts, techniques and models of computer
    programming, Peter Van Roy and Seif Haridi
  • Introduction to Functional Programming, R. Bird
    and P. Wadler, Prentice Hall
  • Seu livro favorito sobre Java (Java 1.5 ou
    posterior)

8
Visão Geral de LinguagenseParadigmas de
Programação
9
O que caracteriza uma Linguagem de Programação?
  • Gramática e significado bem definidos
  • Implementável (executável) com eficiência
    aceitável
  • Universal deve ser possível expressar todo
    problema computável
  • Natural para expressar problemas (em um certo
    domínio de aplicação)

10
Aspectos do estudo de linguagens
  • Sintaxe gramática (forma)
  • Semântica significado
  • Pragmática (ex. metodologias)
  • Processadores
    compiladores, interpretadores, editores,
    ambientes visuais ...

11
Por que tantas linguagens?
  • Propósitos diferentes
  • Avanços tecnológicos
  • Interesses comercias
  • Cultura e background científico

12
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

13
O Paradigma Imperativo
  • Programas centrados no conceito de um estado
    (modelado por variáveis) e ações (comandos) que
    manipulam o estado
  • Paradigma também denominado de procedural, por
    incluir subrotinas ou procedimentos como
    mecanismo de estruturação
  • Primeiro paradigma a surgir e ainda é o dominante

14
Modelo Computacional do Paradigma Imperativo
Entrada
Saída
Programa
Estado
15
Vantagens do modelo imperativo
  • Eficiência (embute modelo de Von Neumann)
  • Modelagem natural de aplicações do mundo real
  • Paradigma dominante e bem estabelecido

16
Desvantagens do paradigma imperativo
  • Relacionamento indireto entre E/S resulta em
  • difícil legibilidade
  • erros introduzidos durante manutenção
  • descrições demasiadamente operacionais
    focalizam o como e não o que

17
O Paradigma Orientado a Objetos
  • Não é um paradigma no sentido estrito é uma
    subclassificacão do imperativo
  • A diferença é mais de metodologia quanto à
    concepção e modelagem do sistema
  • A grosso modo, uma aplicação é estruturada em
    módulos (classes) que agrupam um estado
    (atributos) e operações (métodos) sobre este
  • Classes podem ser estendidas e/ou usadas como
    tipos (cujos elementos são objetos)

18
Modelo Computacional do Paradigma Orientado a
Objetos
...
. . .
. . .
. . .
19
Vantagens do Paradigma Orientado a objetos
  • Todas as do estilo imperativo
  • Classes estimulam projeto centrado em dados
    modularidade, reusabilidade e extensibilidade
  • Aceitação comercial crescente

20
Problemas do Paradigma OO
  • Semelhantes aos do paradigma imperativo, mas
    amenizadas pelas facilidades de estruturação

21
O Paradigma Orientado a Aspectos
  • Não é um paradigma no sentido estrito
  • A diferença é mais de metodologia quanto à
    concepção e modelagem do sistema
  • É uma nova forma de modularização
  • Para requisitos que afetam várias partes de
    uma aplicação

22
O Paradigma Orientado a Aspectos
  • A grosso modo, uma 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)
  • Aspectos podem ser estendidos e/ou usados como
    tipos

23
Modelo Computacional do Paradigma Orientado a
Aspectos
Aspecto
Aspecto
...
. . .
. . .
. . .
24
Vantagens do Paradigma Orientado a Aspectos
  • Todas as do paradigma OO
  • Útil para modularizar conceitos que a Orientação
    a Objetos não consegue (crosscutting concerns)
  • Em especial, aqueles ligados a requisitos não
    funcionais
  • Aumenta a extensibilidade e o reuso

25
Problemas do Paradigma Orientado a Aspectos
  • Semelhantes aos do OO
  • Ainda é preciso diminuir a relação entre classes
    e aspectos
  • Problemas de conflito entre aspectos que afetam a
    mesma classe

26
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, IA,
    concorrência, core de várias soluções ...

27
Modelo Computacional do Paradigma Funcional
Entrada
Saída
Programa
28
Visão Crítica do Paradigma Funcional
  • Vantagens
  • Manipulação de programas mais simples
  • - Prova de propriedades
  • - Transformação (exemplo otimização)
  • - Concorrência explorada de forma natural
  • Problemas
  • O mundo não é funcional!
  • Implementações ineficientes
  • Mecanismos primitivos de E/S e formatação

29
O Paradigma Lógico
  • Programas são relações entre E/S
  • Estilo declarativo, como no paradigma funcional
  • Abstração não determinismo
  • Na prática, inclui características imperativas,
    por questão de eficiência
  • Aplicações prototipação em geral, sistemas
    especialistas, banco de dados, ...

30
Modelo Computacional do Paradigma Lógico
Entrada
Saída
Programa
31
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

32
Outros Paradigmas
  • Agentes
  • Linguagens de domínio específico
  • ...
  • Desenvolvimento baseado em componentes? Linhas de
    produtos de software?
  • Desenvolvimento de sistemas de sistemas?
  • Paradigmas de desenvolvimento, não de programação

33
Tendência integração de paradigmas
  • A principal vantagem é combinar facilidades de
    mais de um paradigma, aumentando o domínio de
    aplicação da linguagem
  • Exemplos linguagens lógicas ou funcionais com o
    conceito de estado e comandos
  • A integração deve ser conduzida com muita
    cautela, para que não se viole os princípios
    básicos de cada paradigma.

34
Outras Classificações
  • Linguagens de 1a., 2a., 3a. 4a. e 5a. gerações
  • Programação seqüencial versus concorrente
  • Programação linear versus programação visual
    (visual programming)
  • Metaprogramação e reflexão
  • Linguagens de script
  • ...

35
Um breve histórico
Smalltalk
C PROLOG
1980....................Ada...........DBASE-II....
..............................................
1990..........................................
...........................Haskell..........Godel.
..
CommonLISP Erlang F Lua
2000...C.....................................
..................................................
.......
Imperativo
Funcional
Lógico
Orientado a objetos
36
Um breve histórico
  • Para mais detalhes, inclusive de versões das
    linguagens
  • http//www.levenez.com/lang/

37
Evolução centrada em níveis crescentes de
abstração
  • Linguagens de máquina
  • Endereços físicos e operation code
  • Linguagens Assembly
  • Mnemônicos e labels simbólicos
  • Linguagens de alto nível
  • Variáveis e atribuição (versus acesso direto à
    memória)
  • Estruturas de dados (versus estruturas de
    armazenamento)

38
Evolução centrada em níveis crescentes de
abstração
  • Estruturas de controle (versus jumps e gotos)
  • Estrutura de blocos como forma de encapsulamento
  • Generalização e parametrização (abstração de
    tipos de valores)
  • Classes, processos, aspectos, ...
Write a Comment
User Comments (0)
About PowerShow.com