• Nenhum resultado encontrado

LP - Aula02.pdf

N/A
N/A
Protected

Academic year: 2019

Share "LP - Aula02.pdf"

Copied!
96
0
0

Texto

(1)

PARADIGMAS DE LINGUAGENS

Prof. Paulo Malcher [email protected]

https://sites.google.com/site/professorpaulomalcher/

(2)

Sumário

Histórico das LP’s

(3)

Histórico das LP

• Década de 80: Modularização

• Ênfase em mecanismos de LP e abstrações.

• Correção de programas: verificação de tipos, exceções.

• Programação concorrente e distribuída e tempo real. • Programação baseada em objetos (TADs)

(4)

Histórico das LP

• Década de 80: Modularização

• Exemplos de linguagens

(5)

Histórico das LP

• Década de 90: Base na Estrutura

• Estruturação de dados: encapsulamento. • Estruturação da computação: classe.

(6)

Histórico das LP

• Década de 90: Base na Estrutura

• Exemplos de linguagens

• Pascal / Object Pascal • C / C++

(7)
(8)

Classificação das LP

Quanto ao nível Quanto à geração

(9)

Classificação das LP

1. Quanto ao nível

(10)

Classificação das LP

1. Quanto ao nível

1.1) Baixo nível

• As linguagens de Baixo Nível são aquelas voltadas

para a máquina, ou seja as que são escritas utilizando as instruções do microprocessador do computador.

• São genericamente chamadas de linguagens

Assembly.

• Os programas escritos com Alto Nível geralmente

(11)

Classificação das LP

1. Quanto ao nível

(12)

Classificação das LP

1. Quanto ao nível

1.1) Baixo nível

• Vantagens: Programas são executados com maior

velocidade de processamento. Os programas

ocupam menos espaço na memória.

• Desvantagens: Em geral, programas em Assembly

tem pouca portabilidade, isto é, um código gerado para um tipo de processador não serve para outro.

Códigos Assembly não são estruturados, tornando a

(13)

Classificação das LP

1. Quanto ao nível

1.2) Médio nível

•São linguagens voltadas ao ser humano e a máquina Estas linguagens são uma mistura entre as linguagens de Alto Nível e as de Baixo Nível.

(14)

Classificação das LP

1. Quanto ao nível

1.2) Médio nível

•Ex: Linguagem C

•Pode-se acessar aos registros do sistema,

trabalhar com endereços de memória -

características de linguagens de baixo nível

(15)

Classificação das LP

1. Quanto ao nível

1.2) Médio nível

Vantagens: Geralmente são linguagens mais poderosas, permitindo a criação de diversos softwares, desde jogos a programas com qualidade profissional.

(16)

Classificação das LP

1. Quanto ao nível

1.3) Alto nível

•São linguagens voltadas para o ser humano. Em geral utilizam sintaxe mais estruturada tornando o seu código mais fácil de entender e de editar programas.

•Trata-se de linguagens independentes da arquitetura do computador.

• um programa escrito em uma linguagem de alto

(17)

Classificação das LP

1. Quanto ao nível

1.3) Alto nível

•Estas linguagens permitem ao programador se esquecer completamente do funcionamento

interno da máquina para a que está

(18)

Classificação das LP

1. Quanto ao nível

1.3) Alto nível

• Vantagens: Por serem compiladas ou interpretadas,

têm maior portabilidade, podendo ser executados

em várias plataformas com pouquíssimas

modificações. Em geral, a programação torna-se mais fácil por causa do maior ou menor grau de estruturação de suas linguagens.

• Desvantagens: Em geral, as rotinas geradas (em

(19)

Classificação das LP

1. Quanto ao nível

(20)

Classificação das LP

2. Quanto à Geração

•2.1) 1ª Geração

•2.2) 2ª Geração

•2.3) 3ª Geração

•2.4) 4ª Geração

(21)

Classificação das LP

2. Quanto à Geração

2.1) 1ª Geração: linguagens em nível de máquina

• Os primeiros computadores eram programados em linguagem de máquina, em notação binária.

• (código de operação 0010) do dado armazenado no registrador

(22)

Classificação das LP

2. Quanto à Geração

2.1) 1ª Geração: linguagens em nível de máquina

•Cada instrução de máquina é, em geral, formada por um código de operação e um ou dois endereços de registradores ou de memória.

•As linguagens de máquina permitem a

(23)

Classificação das LP

2. Quanto à Geração

2.1) 1ª Geração: linguagens em nível de máquina

•Um programa em linguagem de máquina nada mais é que uma sequência de zeros e uns, a

(24)

Classificação das LP

2. Quanto à Geração

2.2) 2ª Geração: linguagens de montagem (Assembly)

•Compreende as linguagens simbólicas ou de

montagem (Assembly), projetadas para

minimizar as dificuldades da programação em

notação binária. Códigos de operação e endereços binários foram substituídos por mnemônicos (abreviações).

(25)

Classificação das LP

2. Quanto à Geração

2.2) 2ª Geração: linguagens de montagem (Assembly)

(26)

Classificação das LP

2. Quanto à Geração

2.2) 2ª Geração: linguagens de montagem (Assembly)

•mov mul add label goto

(27)

Classificação das LP

2. Quanto à Geração

2.2) 2ª Geração: linguagens de montagem (Assembly)

•Códigos de operação e endereços binários foram substituídos por abreviações. Assim, a instrução de máquina (0010 0001 0110 1100) evoluiu para:

•R1 representa o registrador 1 e TOTAL é o nome atribuído ao endereço de memória 108.

(28)

Classificação das LP

2. Quanto à Geração

2.2) 2ª Geração: linguagens de montagem (Assembly)

(29)

Classificação das LP

2. Quanto à Geração

2.2) 2ª Geração: linguagens de montagem (Assembly)

(30)

Classificação das LP

2. Quanto à Geração

2.3) 3ª Geração: linguagens orientadas ao usuário

•Surgiram na década de 60.

•Algumas delas são orientadas à solução de problemas científicos, tais como FORTRAN, PASCAL e ALGOL; outras, tal como COBOL, são usadas para aplicações comerciais.

(31)

Classificação das LP

2. Quanto à Geração

2.3) 3ª Geração: linguagens orientadas ao usuário

•Podem também ser classificadas em:

Linguagens Procedimentais (também chamadas “procedurais” ou imperativas).

(32)

Classificação das LP

2. Quanto à Geração

2.3) 3ª Geração: linguagens orientadas ao usuário

Nas linguagens procedimentais, um programa

especifica um procedimento, isto é, uma sequência de passos a serem seguidos para solucionar um problema.

•As instruções oferecidas por essas linguagens

pertencem, em geral, a três classes:

• Instruções entrada/saída,

• Instruções de cálculos aritméticos ou lógicos

(33)

Classificação das LP

2. Quanto à Geração

2.3) 3ª Geração: linguagens orientadas ao usuário

• Exemplos de linguagens orientadas ao usuário:

BASIC, ALGOL, PL/I, PASCAL, ADA, C, etc.

(34)

Classificação das LP

2. Quanto à Geração

2.3) 3ª Geração: linguagens orientadas ao usuário

•Chamada também de linguagens declarativas dividem-se, basicamente, em duas classes:

Funcionais, as quais se baseiam na teoria das funções recursivas.

(35)

Classificação das LP

2. Quanto à Geração

2.3) 3ª Geração: linguagens orientadas ao usuário

•A programação funcional envolve,

essencialmente, a definição e a chamada de funções. LISP é o exemplo mais difundido de linguagem funcional.

•Nas linguagens lógicas, um programa declara

(36)

Classificação das LP

2. Quanto à Geração

2.4) 4ª Geração: linguagens orientadas à aplicação

•As linguagens de 3ª geração foram projetadas para profissionais de processamento de dados e não para usuários finais.

•A depuração de programas escritos nessas linguagens consome tempo, e a modificação de sistemas complexos é relativamente difícil.

(37)

Classificação das LP

2. Quanto à Geração

2.4) 4ª Geração: linguagens orientadas à aplicação

Os programas escritos em linguagens de 4ª

geração necessitam de menor número de linhas de código do que os programas correspondentes codificados em linguagens de programação convencionais.

Ex. mostrar uma imagem bmp em CA-dBFast:

(38)

Classificação das LP

2. Quanto à Geração

2.4) 4ª Geração: linguagens orientadas à aplicação

(39)
(40)

Classificação das LP

2. Quanto à Geração

2.2.4) 4ª Geração: linguagens orientadas à aplicação

3.As linguagens de 4ª geração variam bastante no número de facilidades oferecidas ao usuário. 4.Algumas são, meramente, geradores de relatórios ou pacotes gráficos;

5.Outras são capazes de gerar aplicações completas.

(41)

Classificação das LP

2. Quanto à Geração

2.4) 4ª Geração: linguagens orientadas à aplicação

•Principais objetivos:

• Facilitar a programação de computadores de tal maneira que usuários finais possam resolver seus problemas.

• Apressar o processo de desenvolvimento de aplicações;

• Facilitar e reduzir o custo de manutenção de aplicações;

• Minimizar problemas de depuração;

(42)

Classificação das LP

2. Quanto à Geração

2.4) 4ª Geração: linguagens orientadas à aplicação

•Exemplos de linguagens de 4ª geração:

• LOTUS 1-2-3, SQL, SUPERCALC, VISICALC,

DATATRIEVE, VHML, PHP.

•Comando em dBase III Plus:

LIST ALL NOME, ENDERECO, TELEFONE FOR CIDADE

(43)

Classificação das LP

2. Quanto à Geração

2.2.5) Geração: linguagens do

conhecimento

3.São usadas principalmente na área de Inteligência Artificial.

(44)

Classificação das LP

2. Quanto à Geração

2.5) Geração: linguagens do

conhecimento

•O termo 5ª geração refere-se, especialmente, a sistemas que usam mecanismos da área de inteligência artificial (IA), ou seja, sistemas especialistas, processadores de linguagem natural e sistemas com bases de conhecimento.

•Um sistema de 5ª geração armazena

(45)

Classificação das LP

2. Quanto ao Paradigma

2.5) Geração: linguagens do

conhecimento

•O termo 5ª geração refere-se, especialmente, a sistemas que usam mecanismos da área de inteligência artificial (IA), ou seja, sistemas especialistas, processadores de linguagem natural e sistemas com bases de conhecimento.

•Um sistema de 5ª geração armazena

(46)

Classificação das LP

3. Quanto ao nível

•3.1) Imperativo

•3.2) Funcional

•3.3) Lógico

•3.4) Orientado a Objetos

(47)

Definição de LP (Relembrando)

• Uma LP (Linguagem de Programação) é uma

linguagem destinada a ser usada por uma

pessoa para expressar um processo através do

qual um computador pode resolver um

problema. Os quatro modelos (paradigmas) de

LP correspondem aos pontos de vista dos quatro

componentes citados. A eficiência na construção

e execução de programas depende da

(48)

TRABALHO 01

• Faça uma pesquisa sobre linguagens de

programação desenvolvidas no Brasil.

• Relatório estruturado impresso a ser entregue

(49)

PARADIGMAS DE LINGUAGENS

Prof. Paulo Malcher [email protected]

https://sites.google.com/site/professorpaulomalcher/

(50)

Paradigma

Etimologia:

A palavra paradigma tem origem:

• Na palavra grega παράδειγμα (paradeigma) que significa “padrão” ou “exemplo”

(51)

Paradigma

• Paradigma é um modelo interpretativo (ou conceitualização) de uma realidade.

• Permite organizar as ideias com vista:

• Ao entendimento dessa realidade.

(52)

Paradigma

(53)

Paradigma de Programação

(54)

Paradigma de Programação

• Um paradigma de programação é um estilo paradigmático de programar.

(55)

Paradigma de Programação

• Modelo, padrão ou estilo de programação suportado por linguagens que agrupam certas características comuns

(56)

O Paradigma Imperativo

(57)

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

(58)

Modelo Computacional do

Paradigma Imperativo

Entrada

Programa

Saída

(59)

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

(60)

O Paradigma Imperativo

• Exemplos

• FORTRAN • BASIC

• COBOL • Pascal • C

(61)

O Paradigma Orientado a Objetos

• Tratam os elementos e conceitos associados ao problema como objetos.

(62)

O Paradigma Orientado a Objetos

• O modelo Orientado a Objeto focaliza mais o problema. Um programa OO é equivalente a objetos que mandam mensagens entre si. Os objetos do programa equivalem aos objetos da vida real (problema).

(63)

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)

(64)
(65)

O Paradigma Orientado a Objetos

• SIMULA 67 foi a primeira linguagem a incorporar estes conceitos, desenvolvida especialmente para a criação de aplicações de simulação.

• Outra linguagem OO importante e pioneira é Smalltalk, originada na dissertação de doutorado de Alan Kay em 1969.

• Outras linguagens OO combinam

(66)

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

(67)

O Paradigma Orientado a Objetos

Vantagens

• Todas as do estilo imperativo

• Classes estimulam projeto centrado em dados: modularidade, reusabilidade e extensibilidade

• Aceitação comercial crescente

Desvantagens

(68)

O Paradigma Concorrente

• Múltiplas computações podem ser executadas simultaneamente.

• Computações paralelas:

• Múltiplos processadores compartilham memória.

• Computações distribuídas:

(69)

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)

(70)

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

Aspecto

Aspecto

Aspecto

(71)

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

(72)

O Paradigma Funcional

• Sistemas são construídos através da definição,

composição e definição de funções

(73)

O Paradigma Funcional

• Trata a programação como uma transformação de dados por funções.

• Que função deve ser aplicada para transformar minha entrada na saída desejada? • Ao invés dos passos sucessivos do paradigma

imperativo, a sintaxe da linguagem é apropriada para definição de funções compostas que denotam aplicações sucessivas de funções.

(74)

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

(75)

Modelo Computacional do

Paradigma Funcional

(76)

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

(77)

Paradigma Funcional

Exemplo

• Scheme

• Derivada de LISP

• Common LISP

• Buscando padronização de LISP

• CLOS (Common LISP Object System)

• Dialeto de LISP que incorpora elementos de linguagens

orientadas a objetos

• ML

• Linguagem funcional fortemente tipada

• Miranda

(78)
(79)

O Paradigma Lógico

• O modelo Lógico está relacionado à perspectiva da pessoa: ele encara o problema de uma perspectiva lógica. Um programa lógico é equivalente à descrição do problema expressa de maneira formal, similar à maneira que o ser humano raciocinaria sobre ele.

• Programação é baseada em fatos, que podem ser relações(associações) entre

coisas, e regras, que produzem fatos

(80)

O Paradigma Lógico

• Programação em linguagens declarativas (lógica) requer um estilo mais descritivo.

(81)

O Paradigma Lógico

• Programas descrevem um conjunto de regras que disparam ações quando suas premissas são satisfeitas.

• Prolog foi desenvolvida em 1972 para processamento de linguagem natural, na França. O nome vem de PROgrammation en

(82)

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

(83)

Modelo Computacional do

Paradigma Lógico

(84)

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)

Desvantagens

• Em princípio, todos do paradigma funcional

(85)

tropical(caribe). tropical(havai). praia(caribe). praia(havai). bonito(havai). bonito(caribe).

paraiso_tropical(X) :- tropical(X), praia(X), bonito(X).

Questionando...

?- paraiso_tropical(X). X = caribe

X é caribe

tropical

true

X é caribe X é caribe

praia bonito

true true

(86)

pai(joao, joaquim). pai(joaquim, manuel).

?- pai(joao,Z). X = joaquim

?- pai(joao,manuel). no.

joao

joaquim

manuel

Processo de resolução

pai(joao,Z).

No fato pai(joao,Z) a variável Z foi unificada a “joaquim”

No fato pai(joao,manuel) a variável joao foi unificada a “joao” e a variável manuel não foi unificada a “joaquim”

(87)

Outros “Paradigmas”

• Agentes

• Linguagens de domínio específico • ...

• Desenvolvimento baseado em componentes? Linhas de produtos de software?

• Desenvolvimento de sistemas de sistemas?

(88)

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

(89)

Exemplos de linguagens por Paradigma

• Paradigma imperativo (estado, atribuição,

sequência)

• Basic, Pascal, C, Ada, Assembly.

• Paradigma funcional (função, aplicação, avaliação)

• Lisp, ML, Miranda, Haskell, SCHEME.

• Paradigma lógico (relação, dedução)

• Prolog.

• Paradigma orientado a objetos (objeto, mensagem)

• C++, Java, Eiffel, Ocaml.

• Paradigma concorrente (processo, comunicação (síncrona ou assíncrona) )

(90)

C++

Paradigma imperativo + paradigma orientado a objetos.

Java

Paradigma orientado a objetos + paradigma concorrente.

Ocaml

Paradigma funcional + paradigma orientado a objetos.

Ada

Paradigma imperativo + paradigma concorrente.

(91)
(92)

Um breve histórico

• Para mais detalhes, inclusive de versões das linguagens:

(93)

Bibliografia

• Sebesta, Robert W. Conceitos de Linguagens de Programação. Bookman, 2003

• Sebesta, Robert W. Concepts of Programming Languages. Addison Wesley, 2005

• Watt, David A. Programming Language Design Concepts. John Wiley, 2004

• Toscani, Simão e Price, Ana Maria de Alencar. Implementação de Linguagens de Programação. Sagra-Luzzatto, 2005

(94)

TRABALHO 02

● Desenvolva uma pesquisa a respeito dos

Paradigmas Concorrente e Orientado a Aspecto.

● Estrutura

● Introdução

● Definição

● Vantagens e Desvantagens

● Tendências

● E outras coisas…

(95)

TRABALHO 02

Entrega do Trabalho

● Entrega de um relatório no formato de artigo da

SBC (no site)

Data da Entrega

● 15/09/2015

Forma de Avaliação

● Entrega do Relatório

(96)

TRABALHO 02

Apresentação em Sala

● O professor chamará dois alunos (a seu

critério) para apresentar cada paradigma.

● Caso os alunos chamado não tenham feito o

trabalho a turma terá mais duas chances na escolha do professor.

Todos os alunos devem trazer no máximo 6

Referências

Documentos relacionados

Capitalismo Sindical” e consiste basicamente em dizer que processos políticos podem ter o seu princípio alterado em detrimento de uma outra classe social. No caso das Primaveras

Tabela 3 - Duração do ciclo após a germinação, produtividade, eficiência no uso da água em cenários climáticos futuros RCP4.5 para o milho semeado em 10 de outubro.. Já para

Segundo Brown (2004), apoiado principalmente no trabalho de Warren e Nisbet (1999), é possível conceber que os indivíduos, quer sejam professores ou estudantes, geralmente

Como prenuncia o próprio título do texto, O pensamento cria, embora fique evidente que aí se trata da relação entre música e artes visuais, não deixamos de notar que o foco

O destaque é dado às palavras que abrem signi- ficados e assim são chaves para conceitos que fluem entre prática poética na obra de arte e sua reflexão em texto científico..

AZUL BR HIMALAYA DO BR URVAKI POI OT BRILHANTE DA RBG TE RAMBO DA MN BUGIO TE DA SM SINERGIA DA SM FUNCIONARIO NAVIRAI TECELAO DA SM CRATERA DE NAVIRAI SENECA DA SM..

Na ZTA do metal de base , porém, constatou-se maior dureza na amostra soldada em chanfro convencional (figura 13), devido a presença de grãos grosseiros junto ã zona de ligação ,

Não é esperado que o produto apresente toxicidade ao órgão-alvo específico por exposição