INF1621 – Linguagens de Programação I INF1621 – Linguagens de

Propaganda
INF1621 – Linguagens de Programação I
Prof.: Marcus Leal – [email protected]@inf.puc-rio.br
4as e 6as, 1515-17hs, sala 520L
Todo o material apresentado em aula será disponibilizado na
web Ö http://www.inf.puchttp://www.inf.puc-rio.br/~inf1621
rio.br/~inf1621
Bibiliografia:
Ghezzi, Carlo; Jazayeri, Mehdi. Programming Language Concepts.
Concepts.
John Wiley & Sons, 1998.
Scott, Michael. Programming Languages Pragmatics.
Pragmatics. Morgan
Kaufmann, 2000.
A xerox dos livros do Ghezzi e do Scott está disponível na pasta
295 da xerox dos homens.
Linguagens de Programacão I
[email protected]
1
INF1621 – Linguagens de Programação I
Programa:
Introdução
Sintaxe e semântica
Escopo, ligação e ambiente de execução
Tipos
Estruturas de controle
Concorrência e paralelismo
Linguagens de programação orientada a objetos
Linguagens de programação lógicas e funcionais
Introdução as linguagens Lua, Java, Prolog e ML
Linguagens de Programacão I
[email protected]
2
1
INF1621 – Linguagens de Programação I
Avaliação:
A avaliação do curso será composta por duas provas
(P1 e P2) e dois trabalhos (T1 e T2).
A média final será calculada por:
MF = (P1+P2+(T1+T2)/2)/3
Se MF for menor que 5.0 o aluno deverá fazer a
prova final (PF), e a nova MF será:
MF = ((maior(P1,P2) +PF+(T1+T2)/2)/3
Linguagens de Programacão I
[email protected]
3
INF1621 – Linguagens de Programação I
Trabalhos:
O primeiro trabalho consistirá na implementação de
um scanner em Lua e em Java.
O segundo trabalho será um apresentação sobre
uma LP a ser definida.
Linguagens de Programacão I
[email protected]
4
2
Introdução
Linguagens de Programacão I
[email protected]
5
Linguagens de Programação
Introdução
Nos primeiros computadores a programação era feita exclusivamente
exclusivamente
através de linguagens de baixo nível, envolvendo a manipulação direta
direta
de recursos específicos de cada máquina.
As linguagens de programação (LPs) surgiram da necessidade de isolar
isolar
o programador de detalhes particulares das máquinas em que a
programação é feita, permitindo a programação em termos mais
próximos ao problema, ou em nível mais alto.
alto.
Algumas LPs são desenvolvidas para atender domínios específicos de
problemas (SQL, PHP, etc), enquanto outras são de uso mais geral.
geral.
As características de uma LP têm um impacto significativo na
capacidade de um programador desenvolver um programa Ö a opção
por uma linguagem é portanto uma decisão de projeto importante.
Linguagens de Programacão I
[email protected]
6
3
Classificação de LPs
Podemos identificar duas categorias principais:
LPs imperativas (ou procedurais) – Um programa é
composto por uma sequência de comandos que realizam
atividades computacionais, usualmente envolvendo a
manipulação da memória ou outros dispositivos.
LPs declarativas – Um programa é composto por
declarações que descrevem um problema e\
e\ou suas
característcas.
Linguagens de Programacão I
[email protected]
7
Classificações de LPs
Imperativas:
von Neumann – LPs tradicionais em que o programa é composto
por rotinas e sequências de comandos (C, Pascal, Fortran, Basic).
Basic).
Orientada a Objetos – O estilo de programação é baseado na
definição de classes e objetos (Smalltalk, Eiffel, C++, Java).
Declarativas:
Funcionais – O modelo de computação é baseado na definição
recursiva de funções (Lisp, Scheme, ML).
Lógica – Um programa consiste na definição de relações lógicas
que devem ser satisfeitas pela solução procurada (Prolog).
Linguagens de Programacão I
[email protected]
8
4
Características Desejáveis de LPs
Legibilidade: facilidade com que um programa pode ser lido e
compreendido.
Redigibilidade: facilidade de expressar soluções de uma forma natural.
natural.
Expressividade: capacidade de representar soluções adequadamente.
adequadamente.
Robustez: capacidade de lidar com situações imprevistas.
Eficiência do programa compilado: velocidade de execução do código
código
gerado, utilização de memória, etc.
Disponibilidade de ferramentas e bibliotecas.
Produtividade.
Portabilidade.
Linguagens de Programacão I
[email protected]
9
Compiladores
Aplicações que transformam um programa fonte descrito em
uma LP de alto nível em um programa objeto (descrito em uma
LP de baixo nível - usualmente linguagem de máquina).
A execução do programa é controlada pelo próprio programa
objeto.
programa fonte
input
compilador
programa objeto
Linguagens de Programacão I
[email protected]
programa objeto
output
10
5
Interpretadores
Um interpretador executa diretamente um programa fonte,
simulando uma máquina virtual cuja programação é executada
diretamente através da própria LP de alto nível.
A execução do programa é controlada diretamente pelo
interpretador que “compõe” o ambiente de execução.
programa fonte
interpretador
output
input
Linguagens de Programacão I
[email protected]
11
Máquinas virtuais
Diversas implementações de LPs incluem uma composição de
compiladores e interpretadores (ex: Java, Lua, .Net).
A geração de código intermediário facilita a portabilidade da LP.
LP.
programa fonte
compilador
programa
intermediário
máquina virtual
programa
intermediário
output
input
Linguagens de Programacão I
[email protected]
12
6
Download