SlideShare uma empresa Scribd logo
1 de 16
#PDS 
Prof. Natanael Simões 
facebook.com/natanaelsimoes 
Desenvolvimento: Programação 
Linguagens Compiladas x Linguagens Interpretadas 
@natanaelsimoes 
natanael.simoes@ifro.edu.br 
steamcommunity.com/id/natanaesimoes
Objetivo 
• Compreender linguagens compiladas e interpretadas e suas 
diferenças estruturais
Por que é preciso compilar ou interpretar? 
• 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? 
Programa (Alto nível) 
Compilador/Interpretador 
Programa (Baixo nível) 
Hardware
Linguagens Compiladas 
• Do latim compilare 
• Significa REUNIR, AJUNTAR 
• Fonte traduzido diretamente para linguagem 
de máquina
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)
Processo de Compilação 
• 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...) 
pos = ini + val * 60 
id1 = id2 + id3 * 60
Processo de Compilação 
• Análise sintática 
Identifica 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. 
id1 = id2 + id3 * 60 
= 
id1 + 
id2 * 
id3 60 
= 
id1 + 
id2 * 
id3 inttofloat(60)
Processo de Compilação = 
• 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. 
id1 + 
id2 * 
id3 inttofloat(60) 
temp1 = inttofloat(60) 
temp2 = id3 * temp1 
temp3 = id2 + temp2 
id1 = temp3 
//otimização 
temp1 = id3 * 60.0 
id1 = id2 + temp1
Processo de Compilação 
• 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. 
temp1 = id3 * 60.0 
id1 = id2 + temp1 
load id3 r2 
mul 60.0 r2 
load id2 r1 
add r2 r1 
store r1 id1
Linguagens Compiladas 
•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 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
Processo de Interpretação 
Programa (Alto nível) 
Programa (Intermediário/Executável) 
Máquina Virtual (Interpretadora)
Processo de Interpretação 
• 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).
Linguagens 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
Exercícios PARA ENTREGAR 
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.

Mais conteúdo relacionado

Mais procurados

CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOCONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
adark
 
Fundamentos programación
Fundamentos programaciónFundamentos programación
Fundamentos programación
Milton Escobar
 

Mais procurados (20)

CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADOCONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
 
Introduction to Compilers
Introduction to CompilersIntroduction to Compilers
Introduction to Compilers
 
Chunked encoding を使った高速化の考察
Chunked encoding を使った高速化の考察Chunked encoding を使った高速化の考察
Chunked encoding を使った高速化の考察
 
Language translator
Language translatorLanguage translator
Language translator
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução
 
Compilador
CompiladorCompilador
Compilador
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Fundamentos programación
Fundamentos programaciónFundamentos programación
Fundamentos programación
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
 
basics of compiler design
basics of compiler designbasics of compiler design
basics of compiler design
 
Refinamiento sucesivo-clean cade cap 14
Refinamiento sucesivo-clean cade cap 14Refinamiento sucesivo-clean cade cap 14
Refinamiento sucesivo-clean cade cap 14
 
Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e FluxogramaAula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
 
Compiler Construction Course - Introduction
Compiler Construction Course - IntroductionCompiler Construction Course - Introduction
Compiler Construction Course - Introduction
 
Conceptos basicos de la programacion
Conceptos basicos de la programacionConceptos basicos de la programacion
Conceptos basicos de la programacion
 
HISTORIA Y EVOLUCION DE LOS LENGUAJES DE PROGRAMACION
HISTORIA Y EVOLUCION DE LOS LENGUAJES DE PROGRAMACIONHISTORIA Y EVOLUCION DE LOS LENGUAJES DE PROGRAMACION
HISTORIA Y EVOLUCION DE LOS LENGUAJES DE PROGRAMACION
 
Pairing and mobbing
Pairing and mobbingPairing and mobbing
Pairing and mobbing
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }
 
少人数チームにおけるプロジェクト管理のベストプラクティス
少人数チームにおけるプロジェクト管理のベストプラクティス少人数チームにおけるプロジェクト管理のベストプラクティス
少人数チームにおけるプロジェクト管理のベストプラクティス
 

Destaque

Route2 company introduction_25.07.11
Route2 company introduction_25.07.11Route2 company introduction_25.07.11
Route2 company introduction_25.07.11
Tim Barker
 

Destaque (20)

Como recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com BacktrackComo recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com Backtrack
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UML
 
Processo de Desenvolvimento de Software - Linguagens Imperativas x Declarativas
Processo de Desenvolvimento de Software - Linguagens Imperativas x DeclarativasProcesso de Desenvolvimento de Software - Linguagens Imperativas x Declarativas
Processo de Desenvolvimento de Software - Linguagens Imperativas x Declarativas
 
Serviços de Rede - VNC
Serviços de Rede - VNCServiços de Rede - VNC
Serviços de Rede - VNC
 
Dias do futuro presente da programação
Dias do futuro presente da programaçãoDias do futuro presente da programação
Dias do futuro presente da programação
 
Todas as coisas que todo programador não pode deixar de saber
Todas as coisas que todo programador não pode deixar de saberTodas as coisas que todo programador não pode deixar de saber
Todas as coisas que todo programador não pode deixar de saber
 
Route2 company introduction_25.07.11
Route2 company introduction_25.07.11Route2 company introduction_25.07.11
Route2 company introduction_25.07.11
 
Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...
Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...
Os paradoxos de Blub, Python, a décima lei de Greenspun e porque você deveria...
 
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
 
Banco de Dados - Introdução: Participação dos bancos de dados no desenvolvime...
Banco de Dados - Introdução: Participação dos bancos de dados no desenvolvime...Banco de Dados - Introdução: Participação dos bancos de dados no desenvolvime...
Banco de Dados - Introdução: Participação dos bancos de dados no desenvolvime...
 
Coisas que levei um tempo para aprender
Coisas que levei um tempo para aprenderCoisas que levei um tempo para aprender
Coisas que levei um tempo para aprender
 
Por que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionaisPor que voce precisa (re)aprender linguagens funcionais
Por que voce precisa (re)aprender linguagens funcionais
 
Voce Tem Orgulho Do Seu Codigo
Voce Tem Orgulho Do Seu CodigoVoce Tem Orgulho Do Seu Codigo
Voce Tem Orgulho Do Seu Codigo
 
Processo de Desenvolvimento de Software - Prototipação
Processo de Desenvolvimento de Software - PrototipaçãoProcesso de Desenvolvimento de Software - Prototipação
Processo de Desenvolvimento de Software - Prototipação
 
Processo de Desenvolvimento de Software - Programação
Processo de Desenvolvimento de Software - ProgramaçãoProcesso de Desenvolvimento de Software - Programação
Processo de Desenvolvimento de Software - Programação
 
Grafologia autoconhecimento e qualidade de vida
Grafologia autoconhecimento e qualidade de vidaGrafologia autoconhecimento e qualidade de vida
Grafologia autoconhecimento e qualidade de vida
 
MVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e Protocolos
MVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e ProtocolosMVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e Protocolos
MVP ShowCast IT - Mensageria - Exchange 2013 Firewalls e Protocolos
 
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareAplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de Programação
 
Processo de Desenvolvimento de Software - Fase de Definição
Processo de Desenvolvimento de Software - Fase de DefiniçãoProcesso de Desenvolvimento de Software - Fase de Definição
Processo de Desenvolvimento de Software - Fase de Definição
 

Semelhante a Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

Construção de compiladores - introducao Compilador.pdf
Construção de compiladores - introducao Compilador.pdfConstrução de compiladores - introducao Compilador.pdf
Construção de compiladores - introducao Compilador.pdf
Gerhard Saboia
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
Wagner Zaparoli
 
Introdução à Programacao em Processing
Introdução à Programacao em Processing Introdução à Programacao em Processing
Introdução à Programacao em Processing
Jorge Cardoso
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iii
Ray Fran Pires
 
LIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosLIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de Algoritmos
Rafael Martins
 
Aula 02 informática aplicada - sistemas operacionais
Aula 02  informática aplicada - sistemas operacionaisAula 02  informática aplicada - sistemas operacionais
Aula 02 informática aplicada - sistemas operacionais
Robson Ferreira
 

Semelhante a Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas (20)

Programação de Microprocessadores
Programação de MicroprocessadoresProgramação de Microprocessadores
Programação de Microprocessadores
 
Code Masters
Code MastersCode Masters
Code Masters
 
Linguagem assembly
Linguagem assemblyLinguagem assembly
Linguagem assembly
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Construção de compiladores - introducao Compilador.pdf
Construção de compiladores - introducao Compilador.pdfConstrução de compiladores - introducao Compilador.pdf
Construção de compiladores - introducao Compilador.pdf
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
Introdução à Programacao em Processing
Introdução à Programacao em Processing Introdução à Programacao em Processing
Introdução à Programacao em Processing
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iii
 
ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01
 
LIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosLIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de Algoritmos
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
Introdução ao Java_14Agosto2012.pdf
Introdução ao Java_14Agosto2012.pdfIntrodução ao Java_14Agosto2012.pdf
Introdução ao Java_14Agosto2012.pdf
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de Programacao
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Swift na linha de comando
Swift na linha de comandoSwift na linha de comando
Swift na linha de comando
 
Aula 02 informática aplicada - sistemas operacionais
Aula 02  informática aplicada - sistemas operacionaisAula 02  informática aplicada - sistemas operacionais
Aula 02 informática aplicada - sistemas operacionais
 

Mais de Natanael Simões

Mais de Natanael Simões (19)

Criação de Material Didático EAD como Ferramenta no Ensino Presencial
Criação de Material Didático EAD como Ferramenta no Ensino PresencialCriação de Material Didático EAD como Ferramenta no Ensino Presencial
Criação de Material Didático EAD como Ferramenta no Ensino Presencial
 
Eletroeletrônica Básica - A estrutura do átomo
Eletroeletrônica Básica - A estrutura do átomoEletroeletrônica Básica - A estrutura do átomo
Eletroeletrônica Básica - A estrutura do átomo
 
Apresentação da Disciplina de Eletroeletrônica Básica
Apresentação da Disciplina de Eletroeletrônica BásicaApresentação da Disciplina de Eletroeletrônica Básica
Apresentação da Disciplina de Eletroeletrônica Básica
 
Apresentação da Disciplina de Segurança da Informação
Apresentação da Disciplina de Segurança da InformaçãoApresentação da Disciplina de Segurança da Informação
Apresentação da Disciplina de Segurança da Informação
 
Apresentação da Disciplina de Software Livre
Apresentação da Disciplina de Software LivreApresentação da Disciplina de Software Livre
Apresentação da Disciplina de Software Livre
 
O que são resistores
O que são resistoresO que são resistores
O que são resistores
 
Componentes passivos e eletromecânicos
Componentes passivos e eletromecânicosComponentes passivos e eletromecânicos
Componentes passivos e eletromecânicos
 
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosBanco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
 
Banco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosBanco de Dados - Tipos de Dados
Banco de Dados - Tipos de Dados
 
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
 
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraBanco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
 
Banco de Dados - Entidade
Banco de Dados - EntidadeBanco de Dados - Entidade
Banco de Dados - Entidade
 
Banco de Dados - Dado, Informação e Abstração
Banco de Dados - Dado, Informação e AbstraçãoBanco de Dados - Dado, Informação e Abstração
Banco de Dados - Dado, Informação e Abstração
 
Instalação e Manutenção: Introdução a Arquitetura de Computadores
Instalação e Manutenção: Introdução a Arquitetura de ComputadoresInstalação e Manutenção: Introdução a Arquitetura de Computadores
Instalação e Manutenção: Introdução a Arquitetura de Computadores
 
Quanto vale a informação? Fundamentos de Segurança da Informação
Quanto vale a informação? Fundamentos de Segurança da InformaçãoQuanto vale a informação? Fundamentos de Segurança da Informação
Quanto vale a informação? Fundamentos de Segurança da Informação
 
Segurança da Informação - Ataques de Rede
Segurança da Informação - Ataques de RedeSegurança da Informação - Ataques de Rede
Segurança da Informação - Ataques de Rede
 
Serviços de Rede - Telnet e SSH
Serviços de Rede - Telnet e SSHServiços de Rede - Telnet e SSH
Serviços de Rede - Telnet e SSH
 
Serviços de Rede - SMTP, POP3 e IMAP
Serviços de Rede - SMTP, POP3 e IMAPServiços de Rede - SMTP, POP3 e IMAP
Serviços de Rede - SMTP, POP3 e IMAP
 
Segurança da Informação - Políticas de Segurança
Segurança da Informação - Políticas de SegurançaSegurança da Informação - Políticas de Segurança
Segurança da Informação - Políticas de Segurança
 

Último

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Dirceu Resende
 

Último (9)

Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
O futuro e o impacto da tecnologia nas salas de aulas
O futuro e o impacto da tecnologia  nas salas de aulasO futuro e o impacto da tecnologia  nas salas de aulas
O futuro e o impacto da tecnologia nas salas de aulas
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 

Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas

  • 1. #PDS Prof. Natanael Simões facebook.com/natanaelsimoes Desenvolvimento: Programação Linguagens Compiladas x Linguagens Interpretadas @natanaelsimoes natanael.simoes@ifro.edu.br steamcommunity.com/id/natanaesimoes
  • 2. Objetivo • Compreender linguagens compiladas e interpretadas e suas diferenças estruturais
  • 3. Por que é preciso compilar ou interpretar? • 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)
  • 4. Por que é preciso compilar ou interpretar? Programa (Alto nível) Compilador/Interpretador Programa (Baixo nível) Hardware
  • 5. Linguagens Compiladas • Do latim compilare • Significa REUNIR, AJUNTAR • Fonte traduzido diretamente para linguagem de máquina
  • 6. 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)
  • 7. Processo de Compilação • 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...) pos = ini + val * 60 id1 = id2 + id3 * 60
  • 8. Processo de Compilação • Análise sintática Identifica 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. id1 = id2 + id3 * 60 = id1 + id2 * id3 60 = id1 + id2 * id3 inttofloat(60)
  • 9. Processo de Compilação = • 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. id1 + id2 * id3 inttofloat(60) temp1 = inttofloat(60) temp2 = id3 * temp1 temp3 = id2 + temp2 id1 = temp3 //otimização temp1 = id3 * 60.0 id1 = id2 + temp1
  • 10. Processo de Compilação • 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. temp1 = id3 * 60.0 id1 = id2 + temp1 load id3 r2 mul 60.0 r2 load id2 r1 add r2 r1 store r1 id1
  • 11. Linguagens Compiladas •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
  • 12. Linguagens 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
  • 13. Processo de Interpretação Programa (Alto nível) Programa (Intermediário/Executável) Máquina Virtual (Interpretadora)
  • 14. Processo de Interpretação • 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).
  • 15. Linguagens 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
  • 16. Exercícios PARA ENTREGAR 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.