Monthly Archives: December 2014

Maçãs e laranjas: diferenças entre compilador e interpretator

Depois que o programa é escrito e todos os erros são consertados, ele pode ser executado de duas formas, dependendo da linguagem. Em algumas linguagens, como C ou Pascal, o programa é transformado em uma linguagem de máquina (binário) por um compilador. Em outras linguagens, como LISP, não possuem compiladores, mas possuem interpretadores para ler e interpretar o programa cada linha por vez e traduzir isso em código de máquina. Outras poucas linguagens, como BASIC, possuem tanto compiladores como interpretadores.

Principal diferença entre um compilador e um interpretador

O interpretador pega uma instrução em linguagem de alto nível, a transforma em um tipo de código intermediário (não de máquina, ainda). Somente quando o programa é chamado, o interpretador de sua linguagem traduzirá a instrução do código intermediário em código de máquina, ou seja, o computador precisa traduzir em tempo real para código de máquina.

Já o compilador traduz o programa inteiro em código de máquina de uma só vez e então o executa, criando um arquivo que pode ser rodado (no Windows é chamado de executável). Durante a tradução ele gera um relatório de erros, caso existam, enquanto o interpretador interrompe a tradução para código de máquina somente quando encontra o primeiro erro.

Como o compilador traduz todo o código de uma só vez, ele gasta uma quantidade maior de tempo analisando e processando a linguagem de alto nível em comparação com o interpretador, que gasta menos tempo nesse mesmo processo. Em geral, o tempo para execução de um código é menor em um código compilado que um interpretado, ou seja, código compilado geralmente roda mais rápido, pois já está todo traduzido em linguagem de máquina, enquanto o interpretado é traduzido à medida que for sendo solicitado, instrução por instrução.

Confuso? Tenho certeza que sim, pois se não ficar confuso quer dizer que você só acha que entendeu, mas na verdade não entendeu nada.

Na compilação, o código de alto nível é traduzido para um código de máquina executável inteiramente de uma vez, desta forma o pré-processamento é mais lento, mas o processamento por parte do computador, quando solicitado por um usuário, por exemplo, é mais rápido.

Na interpretação, o código de alto nível é traduzido para uma linguagem intermediária, ou seja, que não é nem de alto nível nem de máquina, e que pode ser interpretada apenas por um interpretador de uma linguagem. O interpretador da linguagem traduz instrução por instrução para linguagem de máquina à medida que for sendo solicitado. Por esse motivo, o pré-processamento é mais rápido, mas o processamento é mais demorado.