Paradigmas de linguagens de programação

Propaganda
Métodos de implementação de linguagens
Kellen Pinagé
Sumário
 Métodos de implementação de linguagens
 Compilação
 Interpretação pura
 Híbrido
Métodos de implementação de
linguagens
 Principais componentes de um computador: memória
interna e processador
 Memória interna – usada para armazenar programas e
dados
 Processador – conjunto de circuitos que garante a
realização de um conjunto de operações primitivas, ou de
instruções de máquina.
 Linguagem de máquina do computador – conjunto de
macroinstruções
Métodos de implementação de
linguagens
 Arquitetura (resumida)
Memória (armazena instruções e dados)
resultado das
operações
instruções
Processador
Métodos de implementação de
linguagens
 Sistema operacional - um grande conjunto de programas
 Fornece primitivas de nível mais alto do que as linguagens de
máquina




Gerenciamento de recurso do sistema
Operações de entrada e saída
Gerenciamento de arquivos
Outras...
 Sistemas de implementação de linguagens se
comunicam com o sistema operacional
Métodos de implementação de
linguagens
 Camadas
Compilador C
Compilador
Ada
Interpretador
LISP
Sistema Operacional
Interpretador de macroinstruções
Métodos de implementação de
linguagens
 Um programa escrito em uma linguagem de programação
precisa ser traduzido para a linguagem de máquina para ser
executado
 Necessário um programa (ou conjunto de programas) que
receba como entrada o código-fonte e gere o código
traduzido
 Três métodos gerais de implementação de linguagens de
programação
 Compilação
 Interpretação pura
 Híbrido
Compilação
 O processo de compilação efetua a tradução integral do
programa fonte para o código de máquina
 Uma vez traduzido, o programa em linguagem de máquina
pode ser executado diretamente
Fonte
Compilação
Linguagem de máquina
Execução
Compilação
 Esse método tem a vantagem de uma execução de
programa muito rápida
 Não necessita fazer qualquer tradução durante a execução
 Boa parte das verificações de erros já pode ser efetuada
durante a tradução
 O tradutor tem mais liberdade para realizar otimizações na
geração do código executável
 Requer apenas o código executável para que o programa rode

Compilação
 Desvantagens
 Não portabilidade do código executável para máquinas com
arquitetura diferenciada daquela na qual ele foi compilado

Ex.: um programa em C compilado sobre o Linux não é executado
sobre o Windows e vice-versa
 Depuração
 Não guarda referências ao texto do código-fonte – sem indicação da
variável envolvida no erro ou da linha correspondente
 Obs: Existem sistemas de desenvolvimento de programas que
permitem a depuração de programas compilados
Interpretação pura
 No processo de interpretação pura, um programa
interpretado age como um simulador de um computador
virtual que entende as instruções da linguagem de
programação
 Cada instrução do fonte é traduzida para a linguagem de
máquina quando necessita ser executada


Imediatamente após a tradução, o código é executado
Tradução e execução podem ser vistas como um processo único
Interpretação pura
Fonte
Interpretação
Linguagem de máquina
Execução
Interpretação pura
 Vantagem
 Facilidade de depuração, pois as mensagens de erro podem se
referir diretamente ao código-fonte
 Desvantagem
 Execução muito mais lenta

Necessidade de o interpretador decodificar comandos
complexos de uma linguagem de alto nível, verificar erros do
programa e gerar código em linguagem de máquina durante a
própria execução do programa
 Exemplos: LISP, APL, JavaScript
Híbrido
 Processo que combina tanto a execução eficiente quanto a
portabilidade de programas pela aplicação combinada dos
dois métodos anteriores
 Existência de um código intermediário mais fácil de ser
interpretado e, ao mesmo tempo, não específico de uma
plataforma
 Dividido em duas etapas: compilação para um código
intermediário e interpretação desse código
Híbrido
Fonte
Compilação
Código intermediário
Interpretação
Linguagem de máquina
Execução
Híbrido
 Embora a execução seja mais lenta que o código compilado,
a interpretação do código intermediário é muito mais
rápida que a interpretação pura do código-fonte
 Instruções do código intermediário são muito mais simples
que as do código-fonte
 Maior parte das verificações de erro é realizada já na etapa de
compilação
 Como o código intermediário não é específico para uma
plataforma, os programas já compilados podem ser
portados para diferentes plataformas, bastando que exista
um interpretador do código intermediário instalado
Híbrido
 Exemplo:
 Java



Código intermediário é chamada de bytecode
O interpretador de bytecode é a JVM (Java Virtual Machine)
Cada plataforma necessita possuir sua própria JVM para que o
programa em bytecode possa ser executado
Bibliografia
 SEBESTA, R. W. Conceitos de Linguagens de Programação.
5ª. Edição. Editora Bookman, 2003.
 VAREJÃO, Flávio. Linguagem de Programação. Editora
Campus. 2004.
Download