Linguagens e Programao de Compiladores Aula 01
description
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