Linguagens e Programao de Compiladores Aula 01

23
Linguagens de Programação Conceitos e Técnicas Introdução Prof. Tiago Alves de Oliveira

description

Compilador

Transcript of Linguagens e Programao de Compiladores Aula 01

Page 1: Linguagens e Programao de Compiladores Aula 01

Linguagens de ProgramaçãoConceitos e Técnicas

Introdução

Prof. Tiago Alves de Oliveira

Page 2: Linguagens e Programao de Compiladores Aula 01

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

Page 3: Linguagens e Programao de Compiladores Aula 01

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

Page 4: Linguagens e Programao de Compiladores Aula 01

Introdução Linguagens de Programação 4

Papel de LPs no PDS

Principais Propriedades Desejadas em umSoftwareConfiabilidade

Manutenibilidade

Eficiência

Page 5: Linguagens e Programao de Compiladores Aula 01

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

Page 6: Linguagens e Programao de Compiladores Aula 01

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;

Page 7: Linguagens e Programao de Compiladores Aula 01

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;

}

Page 8: Linguagens e Programao de Compiladores Aula 01

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++);

}

Page 9: Linguagens e Programao de Compiladores Aula 01

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”);

}

Page 10: Linguagens e Programao de Compiladores Aula 01

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;

Page 11: Linguagens e Programao de Compiladores Aula 01

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

Page 12: Linguagens e Programao de Compiladores Aula 01

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 +*

Page 13: Linguagens e Programao de Compiladores Aula 01

Introdução Linguagens de Programação 13

Especificação de LPs

SemânticaEnfoque Operacional

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

Page 14: Linguagens e Programao de Compiladores Aula 01

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

Page 15: Linguagens e Programao de Compiladores Aula 01

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

Page 16: Linguagens e Programao de Compiladores Aula 01

Introdução Linguagens de Programação 16

Paradigmas de LPs

Paradigmas

Imperativo Declarativo

Estruturado Orientado

a Objetos

Concorrente Funcional Lógico

Page 17: Linguagens e Programao de Compiladores Aula 01

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

Page 18: Linguagens e Programao de Compiladores Aula 01

Introdução Linguagens de Programação 18

Paradigmas de LPs

Orientado a ObjetosAbstração de Dados

ConcorrenteProcessos Executam Simultaneamente e

Concorrem por Recursos

Page 19: Linguagens e Programao de Compiladores Aula 01

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

Page 20: Linguagens e Programao de Compiladores Aula 01

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

Page 21: Linguagens e Programao de Compiladores Aula 01

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

Page 22: Linguagens e Programao de Compiladores Aula 01

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

Page 23: Linguagens e Programao de Compiladores Aula 01

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