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

Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

Jul 05, 2015

Download

Technology

Esta aula tem como objetivo compreender com se diferem estruturalmente linguagens compiladas da linguagens interpretadas.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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