Compiladores e interpretadores: qual a diferença?

06:30 F.A.P 7 Comments


            
            O ato de implementar programas computacionais envolve uma série de conhecimentos, alguns deles podem ser determinantes para a execução adequada e estável dos primeiros. Nesse ponto entram em cena os interpretadores e compiladores, programas especiais responsáveis por converter uma linguagem de alto nível (produzida pelo programador) em uma linguagem que possa ser compreendida pela máquina – os códigos binários.  Programa fonte é o nome dado ao programa original, em linguagem de alto nível, enquanto para o programa em linguagem de máquina é dado o nome de programa objeto. Costuma-se chamar os compiladores, interpretadores apenas de compiladores, porém, como já foi dito, é importante conhecer as diferenças entre eles.
            Os compiladores caracterizam-se por transformar o programa fonte por completo em programa objeto, ou seja, eles só podem ser executados caso não haja nenhum erro no programa fonte. A análise do programa observa aspectos léxicos, sintáticos e semânticos da linguagem em que está o código. Programas convertidos por meio de compiladores caso sejam editados precisam obrigatoriamente serem recompilados para a aplicação das modificações, o que pode não ser conveniente na fase de desenvolvimento ou quando a programação envolve uma série de modificações. Por outro lado, programas objeto gerados por estes costumam ter execução mais rápida, apesar de exigir maior capacidade de processamento do computador para guardar as informações prévias e posteriores dos comandos. Este último detalhe costumava ser um obstáculo à utilização de compiladores no desenvolvimento de programas para computadores pessoais em virtude da reduzida capacidade de processamento destes, entretanto com a ampliação crescente do poder de processamento dos computadores inversamente proporcional ao espaço necessário para cada componente, essa realidade tem mudado. 
            Caracterizado por uma interpretação do código realizada linha a linha, os interpretadores contam com menos etapas na conversão do programa, no entanto o programa fonte precisa ser lido cada vez que o programa resultado precisa ser executado, isso torna o método mais lento. A utilização de interpretadores pode ser mais adequada para programas que necessitam passar por modificações constantes, pois com o uso de interpretadores não é preciso recompilar todo o código. Cada linha de comando é interpretada por vez sendo a anterior esquecida, este fato diminui a quantidade necessária de memória, uma vez que menos dados do programa ficam armazenados.

Exemplos de linguagens tipicamente interpretadas são: C#, Java, PHP, Python e JavaScript.

Exemplos de linguagens tipicamente compiladas são: C, C++, Objective-C, Pascal, Visual Basic.

É importante citar que na linguagem Java a linguagem é primeiro compilada e depois interpretada por uma máquina virtual, o que confere a esta linguagem um caráter multiplataforma, pois desse modo um mesmo código fonte pode ser transformado em programa que rode em vários sistemas diferentes através da máquina virtual. O código fonte é transformado em byte code e este, por sua vez, é interpretado pela máquina virtual. O Bytecode tem sintaxe similar ao código de máquina e cada comando ocupa 1 byte.

Universidade Federal de Santa Catarina, Interpretadores, Compiladores e Tradutores. Disponível em: <http://www.inf.ufsc.br/~barreto/cca/arquitet/arq4.htm>. Acesso em: 26/05/2015.

Oficina da net, Diferenças entre compiladores e interpretadores. Disponível em: <https://www.oficinadanet.com.br/artigo/1527/diferencas_entre_compiladores_e_interpretadores>. Acesso em: 26/05/2015. 

Wikipedia, Compilador. Disponível em: <https://pt.wikipedia.org/wiki/Compilador>. Acesso em: 12/12/2015.

Wikipedia, Linguagem interpretada. Disponível em: <https://pt.wikipedia.org/wiki/Linguagem_interpretada>. Acesso em: 12/12/2015.






7 comentários:

  1. Uma linguagem de programação pode ser ao mesmo tempo "interpretada" e "compilada" ?

    ResponderExcluir
    Respostas
    1. Sim, basta que este compilador ou interpretador seja implementado à linguagem. Os casos citados acima são os tipicamente compilados ou interpretados.

      Excluir
  2. Um exemplo da diferença: Um jogo que usa um compilador precisa de tudo funcionando em ordem e caso seja necessário uma alteração o jogo tem que ser encerrado; enquanto o Whatsapp, como exemplo, usa uma linguagem "Interpretada" e como é lido linha à linha, não é necessário o desligamento do server para que possa fazer uma modificação.

    ResponderExcluir
  3. Este comentário foi removido pelo autor.

    ResponderExcluir
  4. De quê depende o desempenho de um compilador ou interpretador? Apenas do processador? Quanto maior o processador melhor o desempenho, ou não necessariamente?

    ResponderExcluir
  5. I am regular reader, how are you everybody? This article posted at this web site is in fact fastidious.

    ResponderExcluir
  6. My brother suggested I might like this website. He was entirely right. This post truly made my day. You can not imagine just how much time I had spent for this info! Thanks!

    ResponderExcluir