Cursos / Informática para Internet / Programação Estruturada / Aula

arrow_back Aula 01 - Introdução à linguagem Java e à Programação Estruturada

4. Processos de compilação ou de interpretação

A característica de portabilidade de Java é realmente marcante, por isso vamos explorá-la mais um pouco. Um programa é portável se ele pode ser executado em diferentes plataformas de software e hardware. Exemplos de plataformas de software são os ambientes Windows e Linux. Você já percebeu que, ao fazer o download de alguns programas, você é perguntado se sua máquina é Windows, Linux, etc.? E se sua máquina é um computador de 32 ou de 64 bits (plataforma de hardware)?

Vamos entender isso melhor. Ao escrever um programa, dizemos que o programador escreveu o código-fonte do programa. Para rodar esse programa, precisamos compilá-lo ou interpretá-lo. Interpretar é entrar com o código-fonte em um programa chamado de interpretador. Isso foi o que você fez na disciplina de Lógica de Programação e Algoritmos. Vocês usaram o VisualG ou uma ferramenta equivalente, não foi? Relembrando, o VisualG é uma ferramenta que lê código escrito em português e executa-o, comando por comando. Veja isso na Figura 1.

Processo de compilação e de interpretação

Note o uso da terminologia máquina virtual (virtual machine) no caso do interpretador. Essa máquina virtual simula uma máquina física que entende a linguagem escrita pelo ser humano. Lembre-se de que as máquinas reais, os computadores, só entendem sinais elétricos, representados pelos bits 0 e 1 (linguagem de máquina). Por isso, a máquina virtual tem a função de traduzir cada comando, um por vez, em comandos entendidos pela máquina, ou seja, ela traduz os comandos para a linguagem de máquina.

Já no caso do compilador, essa ferramenta lê o código-fonte por completo, realiza várias verificações e, por fim, gera um código-fonte de saída equivalente ao programa de entrada, porém escrito na linguagem que a máquina compreende.

Qual o melhor processo a ser utilizado? Compilação ou interpretação? Cada um deles tem suas vantagens e desvantagens. Na compilação, temos a vantagem de realizar uma enorme quantidade de verificações de erro antes de gerarmos o código que será executável na máquina. Em caso de existir algum erro no programa, o código executável não será gerado! Entretanto, ao gerarmos o programa executável, ele acaba sendo específico para uma determinada plataforma de software e hardware.

Por esse motivo é que muitas vezes são geradas (compiladas) várias versões de um mesmo programa fonte, uma para cada possível ambiente de execução (Linux ou Windows, 32 ou 64 bits, etc.). É muito chato tanto para o desenvolvedor do software como para o usuário, que tem que ficar escolhendo, entre várias versões, qual a correta para ele baixar, de acordo com a máquina que ele vai utilizar o software.

Na interpretação, não temos as diversas verificações que são feitas pelo compilador. Isso quer dizer que podemos começar a executar um programa e ele poderá parar pela metade porque o programador esqueceu de colocar o símbolo "+" em uma operação de soma, por exemplo.

Entretanto, a interpretação nos traz a possibilidade de se obter portabilidade. Isso porque, para rodar um mesmo programa em ambientes diferentes, é só fazer uso de máquinas virtuais específicas para cada ambiente. Isso quer dizer que, ao instalarmos uma máquina virtual (interpretador da linguagem) na nossa máquina, precisaremos fazer o download da versão correta, de acordo com nossa plataforma (computador/sistema operacional).

Entretanto, qualquer programa escrito na linguagem pode, em teoria, ser executado em qualquer máquina virtual, esteja ela instalada em um computador, com processador de 32 ou de 64 bits, com Linux ou Windows, ou em aparelho de TV ou geladeira, etc.

Um programa é portável se ele pode ser executado em diferentes plataformas de software e hardware.

Versão 5.3 - Todos os Direitos reservados