A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Paradigmas de Linguagens de Programação

Apresentações semelhantes


Apresentação em tema: "Paradigmas de Linguagens de Programação"— Transcrição da apresentação:

1 Paradigmas de Linguagens de Programação
Augusto Sampaio Recife, primeiro semestre de 2013

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é 4 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 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 Linguagens e Paradigmas 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 Programa Saída 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 O paradigma imperativo tem sevido de base para outros: oo e concorrente

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

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
Entrada Programa Saída Estado Aspecto Estado Entrada Programa Saída ... Estado Entrada Programa Saída Estado Entrada Programa Saída Estado Entrada Programa Saída . . .

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

27 Modelo Computacional do Paradigma Funcional
Entrada Programa Saída

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 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 Programa Saída

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

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

35 SIMULA ALGOL-68 PL/I BASIC
Um breve histórico FORTRAN ALGOL COBOL......LISP SIMULA ALGOL PL/I BASIC Pascal Modula ML Miranda Eifell C++ Delphi Java C# Smalltalk C PROLOG Ada DBASE-II Haskell Godel... Erlang F# Orientado a objetos Imperativo Funcional Lógico

36 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)

37 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)


Carregar ppt "Paradigmas de Linguagens de Programação"

Apresentações semelhantes


Anúncios Google