Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf ·...

33
Introdu¸c˜ ao Caracter´ ısticas Paradigmas Linguagem LUA Linguagem de Programa¸c˜ ao e Compiladores Fernando Antˆ onio Asevedo N´ obrega Instituto de Ciˆ encias Matem´ aticas e de Computa¸ ao – USP SCC-206Introdu¸c˜ ao ` aCompila¸c˜ ao 24 de abril de 2012 1 / 20

Transcript of Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf ·...

Page 1: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Linguagem de Programacao e Compiladores

Fernando Antonio Asevedo Nobrega

Instituto de Ciencias Matematicas e de Computacao – USP

SCC-206 Introducao a Compilacao24 de abril de 2012

1 / 20

Page 2: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Sumario

1 Introducao

2 CaracterısticasDomınio ou PropositoVariaveis, Nomes e Tipo

3 ParadigmasFuncionalLogicoProceduralOrientado a ObjetosMulti-paradigma

4 Linguagem LUACaracterısticas Lua

2 / 20

Page 3: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Quais, e como, caracterısticas de Linguagens de Programacaointerferem no desenvolvimento de um Compilador

3 / 20

Page 4: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Domınio

Em qual area sera utilizada a linguagem?

Cientıfico

Fortran, Matlab R©,Ocatve, Ada

Comercial

Cobol

Geral

Inteligencia Artificial

LISP, Prolog, Scheme

Movel

Java

Scripting

Lua, Perl, Python

Web

JavaScript, PHP

Especıficas*

RPG (Relatorios)

Isso interfere na construcao de um Compilador?

Isso e lexico, sintatico ou semantico?

4 / 20

Page 5: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Tipagem de Variaveis

Declaracao: Explıcita X Implıcita

C, Java X Python, PHP

Tipagem: Dinamica X Estatica

PHP, Pyton X C, Java

Tipagem: Fraca X Forte

C, PHP X Java

Isso e lexico, sintatico ou semantico?

5 / 20

Page 6: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Verificacao de Tipo e Excecoes

Verificar tipos das variaveis e possıveis excecoes, como acessar umaposicao nao existente de um vetor

C: nao trata posicao invalida de vetores

Java: trata uso de posicoes invalidas

: Verificacao em compilacao x execucao

Lexico, Sintatico ou Semantico?

O que muda em um compilador que possui esses recursos paraoutro que nao possui?

6 / 20

Page 7: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Como e a LALG

Domınio

Declaracao

Tipagem

Excecoes

Paradigma

7 / 20

Page 8: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Como e a LALG

Domınio Geral (academico)

Declaracao

Tipagem

Excecoes

Paradigma

7 / 20

Page 9: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Como e a LALG

Domınio Geral (academico)

Declaracao Explıcita

Tipagem

Excecoes

Paradigma

7 / 20

Page 10: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Como e a LALG

Domınio Geral (academico)

Declaracao Explıcita

Tipagem Estatica e Fraca

Excecoes

Paradigma

7 / 20

Page 11: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Como e a LALG

Domınio Geral (academico)

Declaracao Explıcita

Tipagem Estatica e Fraca

Excecoes Nao trata

Paradigma

7 / 20

Page 12: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Como e a LALG

Domınio Geral (academico)

Declaracao Explıcita

Tipagem Estatica e Fraca

Excecoes Nao trata

Paradigma Procedural

7 / 20

Page 13: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

O que sao paradigmas?

Formas diferentes de resolver um problema

Adequacoes para algumas areas

Estudos formais de computabilidade (Paradigma Funcional)

Por que e importante reconhecer paradigmas?

8 / 20

Page 14: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

O que sao paradigmas?

Formas diferentes de resolver um problema

Adequacoes para algumas areas

Estudos formais de computabilidade (Paradigma Funcional)

Por que e importante reconhecer paradigmas?

8 / 20

Page 15: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Funcional

Baseada em funcoes matematicas

Nao ha comandos de iteracao, devem ser convertidos parafuncoes recursivas

Muito util para manipulacao de sımbolos (IA)

Desenvolvidas para estudo de computabilidade

LISP

Como a matematica (funcoes) resolve um problema?

Lisp, Scheme, Haskell

9 / 20

Page 16: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Logico

Sintaxe baseado em logica matematica (Clausulas logicas)

Calculo de Predicados

Nao sequencial

Aplicam, em geral, provadores de teoremas

Aplicado em IA

Nao possui comandos de iteracao

O que deve ser representado para resolver um problema?

Prolog (e variacoes)

10 / 20

Page 17: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Procedural

Sequencia de comandos

Paradigma mais comum aos programadores

Possuem comandos de iteracao e desvio

Qual a sequencia de passos para resolver um problema?

C, C++(meio termo), Basic

11 / 20

Page 18: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Orientado a Objetos

Nao necessariamente uma sequencia de comandos

Objetos, que representam entidades, trocam mensagens

Heranca

Abstracao dos dados

Como entidades relacionam-se para resolver um problema?

C++(meio termo), Java, Python, Perl, Ruby

12 / 20

Page 19: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Multi-paradigma

Agregam caracterısticas de mais do que um paradigma

Em geral, a maioria das linguagem possuem um paradigmadominante e agregam caracterısticas de outros paradigmas

Funcional: Scheme

OO: Java, Ruby, Perl

Existem linguagens projetadas para multi-paradigmas

Oz, Scalaa

aUsada pelo Twitter

13 / 20

Page 20: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Linguagem LUA

Desenvolvida na PUC-RIO – Brasil

download: http://www.lua.org/download.html

Atualmente, mantida pelo LabLua

http://www.lua.inf.puc-rio.br

Famosa pelo uso em games

Ironicamente, mais conhecida fora do Brasil

Uso de tabelas associativa (pode-se entender como hash)

Quem usa:

14 / 20

Page 21: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Lexico da Lua

Identificador

Qualquer cadeia de letras, dıgitos e sublinhados que naoinciam com dıgito

Sensıvel ao caso

Palavras reservadas

and, break, do, else, elseif, end, false, for, function, if, in, local,nil, not, or, repeat, return, then, true, until, while

Sımbolos permitidos

ˆ +− ∗/%# == =<=>=<>= ( ) { } [ ] ; : , . .. ...

15 / 20

Page 22: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Precedencia de Operadores

Maior ˆnot # - (unario)* / %+ −..< > <= >= = ==and

Menor or

16 / 20

Page 23: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Estruturas de Controle

comando ::= while exp do bloco end

comando ::= repeat bloco until exp

comando ::= if exp then bloco {elseif exp then bloco} [else bloco] end

comando ::= for nome = exp , exp [, exp] do bloco end

comando ::= for listadenomes in listaexp do bloco end

17 / 20

Page 24: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Retorno e Escopo

Retorno

comando ::= return [ listaexp ]

O que isso sugere?

Escopo

Lua possui escopo lexico, onde um identificador e visıvel a partir domomento que foi declarado ate o fechamento (end) do bloco maisinterno.

18 / 20

Page 25: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Retorno e Escopo

Retorno

comando ::= return [ listaexp ]

O que isso sugere?

Uma funcao pode retornar mais de um valor

Escopo

Lua possui escopo lexico, onde um identificador e visıvel a partir domomento que foi declarado ate o fechamento (end) do bloco maisinterno.

18 / 20

Page 26: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Retorno e Escopo

Retorno

comando ::= return [ listaexp ]

O que isso sugere?

Uma funcao pode retornar mais de um valor

Escopo

Lua possui escopo lexico, onde um identificador e visıvel a partir domomento que foi declarado ate o fechamento (end) do bloco maisinterno.

18 / 20

Page 27: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Caracterısticas Lua

Compilacao

Domınio

Declaracao

Tipagem

Excecoes

19 / 20

Page 28: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Caracterısticas Lua

Compilacao Interpretada

Domınio

Declaracao

Tipagem

Excecoes

19 / 20

Page 29: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Caracterısticas Lua

Compilacao Interpretada

Domınio Scripting

Declaracao

Tipagem

Excecoes

19 / 20

Page 30: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Caracterısticas Lua

Compilacao Interpretada

Domınio Scripting

Declaracao Implıcita

Tipagem

Excecoes

19 / 20

Page 31: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Caracterısticas Lua

Compilacao Interpretada

Domınio Scripting

Declaracao Implıcita

Tipagem Dinamica

Excecoes

19 / 20

Page 32: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Caracterısticas Lua

Compilacao Interpretada

Domınio Scripting

Declaracao Implıcita

Tipagem Dinamica

Excecoes trata

19 / 20

Page 33: Linguagem de Programação e Compiladoreswiki.icmc.usp.br/images/f/f7/AulaPAE2-206t-2012.pdf · Linguagem de Programa˘c~ao e Compiladores Fernando Ant^onio Asevedo N obrega Instituto

Introducao Caracterısticas Paradigmas Linguagem LUA

Referencias

Sebesta, Robert W.(2009) Concepts of programminglanguages. 9 ed. Editora Pearson

Ierusalimschy, R.; de Figueiredo, L. H.; Waldemar CelesManual de Referencia de Lua 5.1.http://www.lua.org/manual/5.1/pt/manual.html

20 / 20