Universidade do Vale do Rio dos Sinos

Slides:



Advertisements
Apresentações semelhantes
PROGRAMAÇÃO DE COMPUTADORES
Advertisements

3 Paradigmas e Linguagens de Programação
Lógica de Programação APRESENTAÇÃO DA DISCIPLINA Prof.° Paulo Tong Prof.° Paulo Universidade Estácio.
Engenharia de Software
Paradigmas de Programação
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
1 Introdução (Informal) à Programação DI/FCT/UNL 1º Semestre 2004/2005.
ELEMENTOS DA INFORMÁTICA
INTRODUÇÃO A INFORMÁTICA
Cálculo Numérico Módulo I Ferramentas de Suporte
Introdução à Informática
Introdução a Informática
INTRODUÇÃO À PROGRAMAÇÃO
Introdução ao paradigma de programação: Orientado a Objetos
Sistemas Operacionais
Curso Sistemas de Informação I Disciplina: Arquitetura de Software
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Luiz A. M. Palazzo Pelotas, maio de 2010
Aula 3 Evolução da Principais Linguagens
Aula 2 Aspectos Preliminares
Aula 4 Nomes, Vinculações, Tipos e Escopos
Aula 8 Orientação à Objetos
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
Linguagens de Programação
Aula 10 Manipulação de Exceções
Laboratório de Programação de Computadores I
09/03/10 20:13 Claudio de Oliveira – 1/21.
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação Orientada a Objetos
Paradigmas de Linguagens de Programação Introdução Professor: Armando Hage Belém-2008.
Administração de Sistemas de Informação Banco de Dados
DIAGRAMA DE COMPONENTES
PROGRAMAÇÃO I UNIDADE 1.
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 12. Estados Objetivo: compreender a notação do diagrama de estados.
Object Oriented Software Construction (MEYER, Bertrand)
Universidade São Marcos Curso: Gestão de Negócios Internacionais
Flávio Melo Gabriel Fornari
IB 1 Introdução à Computação Apresentação do curso Fonte: Prof: Joseana Macedo Fachine na01.ppt.
Caracterização e Objetivos das LP
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
Arquitetura de computadores
História dos computadores e da programação
Estudo dos Conceitos e Paradigmas de Programação
Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
Paradigmas de Programação
Projeto de Banco de Dados
02/08/2011 Professor Leomir J. Borba- –
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Paradigma funcional.
Paradigmas de Linguagens de Programação Aula 2
Introdução a Linguagens de Programação
Paradigmas de Linguagens de Programação
Organização e Arquitetura de Computadores
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Abr-17 Atividades, Artefatos e Responsáveis da Disciplina de Análise e Projeto Fluxo de análise e projeto.
Aula 1 – Profª Danielle Costa
Linguagens de Programação Introdução Prof. Renato Melo.
Programação Lógica com Prolog
Treinamento PHP Módulo 2 PHP Avançado Waelson Negreiros
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
Evolução das Principais Linguagens de Programação
Paradigmas de Programação
Módulo II Capítulo 1: Orientação a Objetos
Influencias sobre o Projeto da Linguagem
Módulo I – Softwares: Linguagens de Programação Prof.: Rogério Morais.
1 Especificação de Sistemas de Software e a UML. 2 Modelagem de sistema A modelagem de sistema auxilia o analista a entender a funcionalidade do sistema.
Transcrição da apresentação:

Universidade do Vale do Rio dos Sinos Paradigmas e Técnicas de Programação por Jorge Luis Victória Barbosa adaptado por Marta Becker Villamil

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)

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

Paradigma Realidade Paradigma Domínio Modelo Computacional fornece e determina a visão que o programador possui sobre a estruturação e execução do programa

O que é um paradigma de programação? Modelo, padrão ou estilo de programação suportado por linguagens que agrupam certas características comuns

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

Modelo Computacional do Paradigma Imperativo Entrada Programa Saída Estado Sequência de comandos para o computador executar

Visão Crítica do Paradigma Imperativo Vantagens - Eficiência (embute modelo de Von Neumann) - Paradigma dominante e bem estabelecido Problemas - Relacionamento indireto entre E/S resulta em: - difícil legibilidade - erros introduzidos durante manutenção - descrições demasiadamente operacionais

O Paradigma Orientado a Objetos A grosso modo, uma aplicação é estruturada em módulos (classes) que agrupam um estado (atributos) e operações (métodos) que atuam nele Classes podem ser estendidas (herança) e/ou usadas como tipos

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

Visão Crítica do Paradigma Orientado a objetos Vantagens - Classes permitem uma melhor organização do projeto: modularidade, reusabilidade e extensibilidade - Aceitação comercial crescente Problemas - Semelhantes às do paradigma imperativo, mas amenizadas pelas facilidades de estruturação

O Paradigma Funcional Programas são compostos por funções matemáticas 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: Matemática Computacional e IA

O Paradigma Funcional Não há alocação explícita de memória nem declaração explícita de variáveis. Ambas as operações podem ocorrer nos pontos de entrada e na saída da função, então efeitos colaterais no cálculo da função são eliminados.

Visão Crítica do Paradigma Funcional Vantagens - Maior poder de expressão, principalmente para problemas matemáticos - Concorrência explorada de forma natural Problemas - “O mundo não é funcional!” - Mecanismos primitivos de E/S

O Paradigma em Lógica Programas são compostos por cláusulas lógicas Estilo declarativo, como no paradigma funcional Na prática, inclui características imperativas, por questão de eficiência Aplicações: sistemas especialistas, banco de dados e IA

Visão Crítica do Paradigma em Lógica 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

Multiparadigma Objetos Imperativo Lógica

Multiparadigma Lógica Objetos Imperativo Novos modelos Paradigmas Básicos Orientação a Objetos Paradigma Funcional Paradigma em Lógica

Tendência: integração de paradigmas (multiparadigma) A principal vantagem é combinar facilidades de mais de um paradigma, aumentando o domínio de aplicação da linguagem Exemplo: linguagens orientadas a objeto que permitem a implementação do métodos usando lógica ou funções A integração deve ser conduzida com muita cautela, para que não se viole os princípios básicos de cada paradigma.

Modelos multiparadigma Paradigmas Integrados Distribuição Estilo I+   Objetos, Lógica e Funcional Objetos distribuídos Programação declarativa orientada a objetos, ou seja, especificação de objetos através da lógica ou funções OWB Objetos e Lógica Não enfoca Suporte à criação de agentes através da inserção de lógica em objetos (nova classe LogicKnowledge) DLO Processos organizados em Objetos Lógicos implementados através de Cláusulas de Múltiplas Cabeças OLI Mapeamento de Objeto -> Lógica (classe Pterm) e Lógica -> Objeto (Enriched Herbrand Universe) Mozart Tarefas conectadas através de um armazenamento compartilhado (constraint store) Alma-0 Imperativo e Lógico Mecanismos para suporte à não determinismo e backtracking em linguagens imperativas Jinni Objetos, Lógica e Imperativo Agentes distribuídos Agentes móveis que utilizam blackboards locais para sincronização e comunicação

SIMULA ALGOL-68 PL/I BASIC 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... Java Delphi Orientado a objetos Imperativo Funcional Lógico

SIMULA ALGOL-68 PL/I BASIC 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... Java Delphi Orientado a objetos Imperativo Funcional Lógico

SIMULA ALGOL-68 PL/I BASIC 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... Java Delphi Orientado a objetos Imperativo Funcional Lógico

Estratégias de Programação Programação Orientada a Aspectos Programação Orientada a Pares (Extreme Programming) Programação Orientada a Eventos Programação Orientada a Agentes Programação Baseada em Componentes Programação Orientada à Computação Móvel Programação Genérica Padrões de Projeto (Design Patterns) Refatoração