Upload
phungque
View
218
Download
0
Embed Size (px)
Citation preview
Prof. Edilberto Silva / edilms.eti.br
Paradigmas de Programação
Prof.: Edilberto M. Silvahttp://www.edilms.eti.brhttp://www.edilms.eti.br
Aula IAula IApresentaçãoApresentação
PP - Prof. Edilberto Silva - http://edilms.eti,br 2
Professor EDILBERTO M. SILVA
[email protected] em Ciência da ComputaçãoMestre em Gestão do Conhecimento e da
Tecnologia da InformaçãoKDT, KDD, DSS, Gestão da Informação
PRESI/RADIOBRÁSGerência Técnica em DesenvolvimentoAnalista de Sistemas e DBA SQL Server
PP - Prof. Edilberto Silva - http://edilms.eti,br 3
EmentaLinguagens de programação: evolução,
características; Estruturas sintáticas: notações e gramáticas; Linguagens: imperativas, funcionais,
orientadas a objetos, programação lógica; programação concorrente.
Objetivos Estudar os princípios de projeto e as características
dos principais modelos de linguagens de programação e sua adequação à solução de problemas.
PP - Prof. Edilberto Silva - http://edilms.eti,br 4
para que estudá-los? Capacidade crescente de expressar idéias.A profundidade que se consegue pensar é
influenciada pelo poder da linguagem com a qual se está comunicando os pensamentos.
Aumenta-se a habilidade de aprender novas linguagens.
Melhora-se a compreensão do significado da implementação.
Habilidade maior de projetar novas linguagens.Avanço da computação.
PP - Prof. Edilberto Silva - http://edilms.eti,br 5
ConteúdoParadigmas de Programação1) Programação Imperativa.2) Programação Orientada a Objetos.3) Programação Funcional.4) Programação em Lógica.
Imperativa: Fortran, Pascal, “C” Orientada a Objetos: Smalltalk, “C++”,
Java Funcional: LISPLógica: PROLOG
PP - Prof. Edilberto Silva - http://edilms.eti,br 6
Linguagens de ProgramaçãoO que caracteriza uma linguagem de programação?
Sintaxe e semântica bem definidas;
Implementável (executável) com eficiência aceitável.
Universal: deve ser possível expressar todo problema
computável.
Natural para expressar soluções de problemas (em um
certo domínio de aplicação).
PP - Prof. Edilberto Silva - http://edilms.eti,br 7
Por que tantas?C, C++, Java, Basic, COBOL, Lisp, Haskell, Modula-
2, Oberon, Prolog, Java, C#, Pascal, PL/1, Ada, Smalltalk, Símula, Algol, Eiffel, Fortran (1957), ASM, Scheme, CLOS, Maude, Python, Glass, etc.
Propósitos Diferentes; Avanços Tecnológicos. Interesses comerciais. Cultura e background científico.
PP - Prof. Edilberto Silva - http://edilms.eti,br 8
ParadigmaO que significa um paradigma?Como se traduz este significado para o contexto da
programação?Como se pode caracterizar um paradigma?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 têm impacto na forma segundo a qual uma aplicação real é modelada do ponto de vista computacional.
PP - Prof. Edilberto Silva - http://edilms.eti,br 9
Características Comuns
for i:=1 to n dobeginx:=x*i;If(x mod 2)=0 thenwriteln(x, ’é par’)elsewriteln(x, ’é ímpar’);end;
Um problema do mundo real é descrito em termos de variáveis (nome, tipo, endereço), ciclos, condicionais, atribuições, expressões (valor, tipo), entrada e saída, comandos.
ConcretizaçãoAbstraçãoTeoria
Prática
PP - Prof. Edilberto Silva - http://edilms.eti,br 10
O que caracteriza uma Linguagem de Programação?
Gramática e significado bem definidosImplementável (executável) com eficiência
‘‘aceitável’’Universal: deve ser possível expressar todo
problema computávelNatural para expressar problemas (em um
certo domínio de aplicação)
PP - Prof. Edilberto Silva - http://edilms.eti,br 11
Aspectos do estudo de linguagens
Sintaxe: gramática (forma)Semântica: significadoPragmática (ex.: metodologias)Processadores:
compiladores, interpretadores, editores, ambientes visuais ...
PP - Prof. Edilberto Silva - http://edilms.eti,br 12
O Paradigma ImperativoProgramas 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 pro- cedimentos como mecanismo de estruturação
Primeiro paradigma a surgir e ainda é o dominante
PP - Prof. Edilberto Silva - http://edilms.eti,br 13
Modelo Computacional do Paradigma Imperativo
Entrada Programa Saída
Estado
PP - Prof. Edilberto Silva - http://edilms.eti,br 14
Visão Crítica do Paradigma Imperativo Vantagens Eficiência (embute modelo de Von Neumann) Modelagem “natural” de aplicações do mundo real 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
focalizam o como e não o que
PP - Prof. Edilberto Silva - http://edilms.eti,br 15
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 e operações (métodos) sobre este
Classes podem ser estendidas e/ou usadas como tipos (cujos elementos são objetos)
PP - Prof. Edilberto Silva - http://edilms.eti,br 16
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
PP - Prof. Edilberto Silva - http://edilms.eti,br 17
Visão Crítica do Paradigma Orientado a objetos
Vantagens Todas as do estilo imperativo Classes estimulam projeto centrado em dados:
modularidade, reusabilidade e extensibilidade Aceitação comercial crescenteProblemas Semelhantes às do paradigma imperativo, mas
amenizadas pelas facilidades de estruturação
PP - Prof. Edilberto Silva - http://edilms.eti,br 18
O Paradigma FuncionalProgramas são funções que descrevem uma
relação explícita e precisa entre E/SEstilo 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
PP - Prof. Edilberto Silva - http://edilms.eti,br 19
Modelo Computacional do Paradigma Funcional
Entrada Programa Saída
PP - Prof. Edilberto Silva - http://edilms.eti,br 20
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
PP - Prof. Edilberto Silva - http://edilms.eti,br 21
O Paradigma Lógico
Programas são relações entre E/SEstilo declarativo, como no paradigma
funcionalNa prática, inclui características
imperativas, por questão de eficiênciaAplicações: sistemas especialistas e banco
de dados
PP - Prof. Edilberto Silva - http://edilms.eti,br 22
Modelo Computacional do Paradigma Lógico
Entrada Programa Saída
PP - Prof. Edilberto Silva - http://edilms.eti,br 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
PP - Prof. Edilberto Silva - http://edilms.eti,br 24
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.
PP - Prof. Edilberto Silva - http://edilms.eti,br 25
Outras Classificações
Linguagens de 1a., 2a., 3a. 4a. e 5a. geraçõesProgramação seqüencial versus concorrenteProgramação linear versus programação visual
(visual programming) Ex.: Visual BASIC, Delphi, Visual Cafe
...
PP - Prof. Edilberto Silva - http://edilms.eti,br 26
Um breve histórico1950........................................................................................................
FORTRAN
1960.......................ALGOL-60...........COBOL......LISP.........................
SIMULA ALGOL-68 PL/I BASIC 1970..................Pascal............................................................................
Smalltalk C PROLOGModula-2 ML
1980....................Ada...........DBASE-II..................................................Miranda
Eifell C++ 1990.....................................................................Haskell..........Godel...
Java Delphi
Imperativo Funcional LógicoOrientado a objetos
PP - Prof. Edilberto Silva - http://edilms.eti,br 27
Referências BibliográficasBIBLIOGRAFIA BÁSICA
SEBESTA, R. W. Conceitos de Linguagens de Programação. Porto Alegre: Bookman, 2000.
MELO, A; SILVA, F. Princípios de Linguagem de Programação. São Paulo: Edgard Blücher, 2003.
BIBLIOGRAFIA COMPLEMENTAR
GHEZZI, Carlos; JAZAYERI, Mehdi. Conceitos de Linguagens de Programação. Rio de Janeiro: Campus, 1985.
Varejão, Flávio. Linguagens de Programação: Conceitos e Técnicas: JAVA, C e C++ e outras. Rio de Janeiro: Campus, 2004.
VILLAS, Marcos Vianna; VILLASBOAS, Luiz Felipe. Programação, Conceitos Teóricos e Linguagem. Rio de Janeiro: Campus, 1997.
Ziviani, Nívio. Projeto de algoritmos com implementações em Pascal e C. 3.ed. São Paulo: Pioneira, 2004