processo de desenvolvimento de software - linguagens compiladas x interpretadas

16
#PDS Prof. Natanael Simões facebook.com/natanaelsimoes Desenvolvimento: Programação Linguagens Compiladas x Linguagens Interpretadas @natanaelsimoes [email protected] steamcommunity.com/id/natanaesimoes

Upload: natanael-augusto-viana-simoes

Post on 05-Jul-2015

295 views

Category:

Technology


1 download

DESCRIPTION

Esta aula tem como objetivo compreender com se diferem estruturalmente linguagens compiladas da linguagens interpretadas.

TRANSCRIPT

Page 1: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

#PDS

Prof. Natanael Simões

facebook.com/natanaelsimoes

Desenvolvimento: ProgramaçãoLinguagens Compiladas x Linguagens Interpretadas

@natanaelsimoes

[email protected]

steamcommunity.com/id/natanaesimoes

Page 2: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

• Compreender linguagens compiladas e interpretadas e suas diferenças estruturais

Objetivo

Page 3: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

• Programas são escritos em linguagem de alto nível

• Máquinas não conversam como os humanos, elas têm uma linguagem própria

(ou linguagem de baixo nível)

Por que é preciso compilar ou interpretar?

Page 4: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

Por que é preciso compilar ou interpretar?

Programa (Alto nível)

Compilador/Interpretador

Programa (Baixo nível)

Hardware

Page 5: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

• Do latim compilare

• Significa REUNIR, AJUNTAR

• Fonte traduzido diretamente para linguagem de máquina

Linguagens Compiladas

Page 6: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

Processo de Compilação

Programa (Alto nível)

Análise léxica

Análise sintática

Geração de código (Baixo nível)

Programa (Objeto executável)

Page 7: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

• Análise léxica

Reconhece as sequências de símbolos que representam uma unidade: o nome de uma variável, constante e palavras de instrução (while, for...)

Processo de Compilação

pos = ini + val * 60

id1 = id2 + id3 * 60

Page 8: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

• Análise sintáticaIdentifica a estrutura gramatical do programa e o papel de cada componente. É construída uma árvore sintática (binária, estruturalmente) e uma tabela de símbolos que representam as variáveis.

Processo de Compilação

id1 = id2 + id3 * 60

=id1 +

id2 *id3 60

=id1 +

id2 *id3 inttofloat(60)

Page 9: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

• Geração de código

Processo de construir instruções da linguagem de máquina (em assembly) que simulam as instruções reconhecidas na análise sintática.

Processo de Compilação =id1 +

id2 *id3 inttofloat(60)

temp1 = inttofloat(60)temp2 = id3 * temp1temp3 = id2 + temp2id1 = temp3

//otimizaçãotemp1 = id3 * 60.0id1 = id2 + temp1

Page 10: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

• Geração de código

Processo de construir instruções da linguagem de máquina (em assembly) que simulam as instruções reconhecidas na análise sintática.

Processo de Compilaçãotemp1 = id3 * 60.0id1 = id2 + temp1

load id3 r2

mul 60.0 r2

load id2 r1

add r2 r1

store r1 id1

Page 11: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

•Vantagens: •Execução rápida, o código já está traduzido!•Executáveis são pequenos•VOCÊ CONTROLA o hardware

•Desvantagens:•Só roda na arquitetura em que for compilado•VOCÊ CONTROLA o hardware

Linguagens Compiladas

Page 12: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

•Do latim interpretare

•Significa EXPLICAR, TRADUZIR

•Fonte traduzido para uma linguagem intermediária (normalmente Bytecode) que mais tarde será novamente traduzido para linguagem de máquina

Linguagens Interpretadas

Page 13: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

Processo de Interpretação

Programa (Alto nível)

Programa (Intermediário/Executável)

Máquina Virtual (Interpretadora)

Page 14: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

• Máquina virtual (VM)

Traduz os comandos da linguagem intermediária para linguagem de máquina em tempo de execução. A VM reconhece toda a arquitetura de hardware e traduz de acordo com o equipamento (culpa do Java).

Processo de Interpretação

Page 15: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

•Vantagens• Independe de arquitetura (desde que suporte a

máquina virtual)•A MÁQUINA VIRTUAL controla o hardware

•Desvantagens•Desempenho inferior à linguagem compilada por causa

da tradução Just-in-time, mas nada alarmante•Consome bastante hardware (estou olhando pra você,

Java)•A MÁQUINA VIRTUAL controla o hardware

Linguagens Interpretadas

Page 16: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

1) Que diferença básica existe entre linguagens compiladas de linguagens interpretadas?

2) Por que temos necessidade de compilar ou interpretar código?

3) Explique o processo de compilação.

4) Explique o processo de interpretação.

5) Quais vantagens e desvantagens há na compilação?

6) Quais vantagens e desvantagens há na interpretação?

7) Qual dos tipos de linguagens é melhor? Defenda seu ponto de vista.

Exercícios PARA ENTREGAR