processo de desenvolvimento de software - linguagens compiladas x interpretadas
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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/1.jpg)
#PDS
Prof. Natanael Simões
facebook.com/natanaelsimoes
Desenvolvimento: ProgramaçãoLinguagens Compiladas x Linguagens Interpretadas
@natanaelsimoes
steamcommunity.com/id/natanaesimoes
![Page 2: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/2.jpg)
• Compreender linguagens compiladas e interpretadas e suas diferenças estruturais
Objetivo
![Page 3: Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/3.jpg)
• 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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/5.jpg)
• 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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/7.jpg)
• 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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/8.jpg)
• 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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/9.jpg)
• 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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/10.jpg)
• 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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/11.jpg)
•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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/12.jpg)
•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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/14.jpg)
• 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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/15.jpg)
•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](https://reader033.vdocuments.site/reader033/viewer/2022052508/559896161a28ab394b8b458a/html5/thumbnails/16.jpg)
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