Linguagens e Programao de Compiladores Aula 01

Post on 11-Jan-2016

27 views 3 download

description

Compilador

Transcript of Linguagens e Programao de Compiladores Aula 01

Linguagens de ProgramaçãoConceitos e Técnicas

Introdução

Prof. Tiago Alves de Oliveira

Introdução Linguagens de Programação 2

Razões para Estudar LPs

Maior capacidade de desenvolver soluçõescomputacionais para problemas

Maior habilidade ao usar uma LP

Maior capacidade para escolher LPs apropriadas

Maior habilidade para aprender novas LPs

Maior habilidade para projetar novas LPs

Introdução Linguagens de Programação 3

Papel de LPs no PDS

O objetivo de LPs é tornar mais efetivo oprocesso de desenvolvimento de software(PDS)

PDS visa geração e manutenção de softwarede modo produtivo e garantia de padrões dequalidade

Introdução Linguagens de Programação 4

Papel de LPs no PDS

Principais Propriedades Desejadas em umSoftwareConfiabilidade

Manutenibilidade

Eficiência

Introdução Linguagens de Programação 5

Papel de LPs no PDS

Etapas do PDSEspecificação de Requisitos

Projeto do Software

Implementação

Validação

Manutenção

Introdução Linguagens de Programação 6

Propriedades Desejáveis em LPs

LegibilidadeMarcadores de Blocos

if (x>1)if (x==2)

x=3;else

x=4;Desvios Incondicionais

gotoDuplicação de Significado de Vocábulos

this (em JAVA)*p = (*p)*q;

Introdução Linguagens de Programação 7

Propriedades Desejáveis em LPs

Efeitos Colaterais

int x = 1;

int retornaCinco() {

x = x + 3;

return 5;

}

void main() {

int y;

y = retornaCinco ();

y = y + x;

}

Introdução Linguagens de Programação 8

Propriedades Desejáveis em LPs

RedigibilidadeTipos de Dados Limitados (FORTRAN)

Ausência de Tratamento de Exceções

Conflito Ocasional com Legibilidade

void f(char *q, char *p) {

for (;*q=*p; q++,p++);

}

Introdução Linguagens de Programação 9

Propriedades Desejáveis em LPs Confiabilidade

Declaração de Tiposboolean u = true;int v = 0;while (u && v < 9) {

v = u + 2;if (v == 6) u = false;

}Tratamento de Exceções

try {System.out.println(a[i]);

} catch (IndexOutofBoundsException) {System.out.println(“Erro de Indexação”);

}

Introdução Linguagens de Programação 10

Propriedades Desejáveis em LPs

EficiênciaVerificação Dinâmica de Tipos

Facilidade de AprendizadoExcesso de Características é Prejudicial

c = c + 1;

c+=1;

c++;

++c;

Modificabilidadeconst float pi = 3.14;

Introdução Linguagens de Programação 11

Propriedades Desejáveis em LPs

Reusabilidade

void troca (int *x, int *y) {

int z = *x;

*x = *y;

*y = z;

}

PortabilidadeRigor no Projeto

Pode Contrastar com Eficiência

Introdução Linguagens de Programação 12

Especificação de LPs

Léxico x Sintaxe x Semântica

a = b;

Sintaxe

expressão valorvaloroperadorexpressão

valor númerosinalnúmero

número semsinalsemsinal.semsinal

semsinal dígitodígitosemsinal

dígito 0123456789

sinal +

operador +*

Introdução Linguagens de Programação 13

Especificação de LPs

SemânticaEnfoque Operacional

Necessidade de PadronizaçãoISO, IEEE, ANSI, NIST

Introdução Linguagens de Programação 14

Implementação de LPs

Compilação Interpretação Pura Híbrido

Fonte Fonte FonteLPLP LP

Execução

L.M.

L.M.

L.M.

CompilaçãoCompilação

Interpretação

Código

Intermediário

Interpretação

Execução

Execução

Dados

Dados

Dados

Introdução Linguagens de Programação 15

Implementação de LPs

CompilaçãoEficiênciaProblemas com Portabilidade e Depuração

Interpretação PuraFlexibilidade, Portabilidade e Facilidade para Prototipação e

DepuraçãoProblemas com Eficiência e Maior Consumo de MemóriaRaramente Usada

HíbridoUne Vantagens dos Outros MétodosJVM

Introdução Linguagens de Programação 16

Paradigmas de LPs

Paradigmas

Imperativo Declarativo

Estruturado Orientado

a Objetos

Concorrente Funcional Lógico

Introdução Linguagens de Programação 17

Paradigmas de LPs

ImperativoProcesso de Mudanças de Estados

Variável, Valor e Atribuição

Células de Memória

EstruturadoRefinamentos Sucessivos

Blocos Aninhados de Comandos

Desestímulo ao uso de desvio incondicional

Introdução Linguagens de Programação 18

Paradigmas de LPs

Orientado a ObjetosAbstração de Dados

ConcorrenteProcessos Executam Simultaneamente e

Concorrem por Recursos

Introdução Linguagens de Programação 19

Paradigmas de LPs

DeclarativoEspecificações sobre a Tarefa a Ser Realizada

Abstrai-se de Como o Computador é Implementado

FuncionalPrograma Composto por Funções

LógicoPredicados

Dedução Automática

Introdução Linguagens de Programação 20

Evolução de LPs

Dificuldade de Programação em Linguagens deMáquina

Foco de Primeiras LPs era Eficiência deProcessamento e Consumo de Memória

Baixa Produtividade de ProgramaçãoProgramação Estruturada

Tipos Abstratos de Dados

Orientação a Objetos

Introdução Linguagens de Programação 21

Origem de LPs

FORTRAN (1957)aplicações numéricas

LISP (1959)programação funcional

ALGOL (1960)programação estruturada

COBOL (1960)aplicações comerciais

Introdução Linguagens de Programação 22

Origem de LPs

BASIC (1964)ensino para leigos

PASCAL (1971)ensino de programação estruturadasimplicidade

C (1972) implementação de UNIX

PROLOG (1972) programação lógica

Introdução Linguagens de Programação 23

Origem de LPs

SMALLTALK (1972)programação orientada a objetos

ADA (1983)programação concorrente

C++ (1985)disseminação da programação orientada a objetos

JAVA (1995)mais simples e confiável que C++Internet