Compiladores vs Interpretadores

Olá personas, como vão?
Hoje vamos começar uma série de postagens que realiza a comparação entre Compiladores e Interpretadores.
Nesta série especificaremos o que são Compiladores, onde, principalmente, são utilizados quais as vantagens e desvantagens em relação aos Interpretadores.
E de maneira análoga especificaremos os Interpretadores e os compararemos com os Compiladores.

Há quem diga que os compiladores são melhores e há também os que confirmam a superioridade dos interpretadores, mas a depender da situação um vai ser melhor que o outro.


Fig. 01 - A Lebre e a Tartaruga

Mas então o que são Compiladores e Interpretadores?
Ambos são formas de tradução de um código, normalmente de alto nível (mais próximo à linguagem humana), para uma linguagem mais próxima à linguagem de máquina, binária (linguagem de baixo nível). Ao programa original, em linguagem de alto nível, dá-se o nome de Programa Fonte e ao resultado, em linguagem de máquina, de Programa Objeto.

Compiladores (Lebre): é um programa ou conjunto deles que escrito por uma linguagem (necessitada de compilação para sua execução) ao ser compilado gera outro código que é interpretado pelo computador. 
O programa é traduzido da primeira até a última linha de uma única vez, sendo verificada a ocorrência de algum erro durante a escrita do programa, caso não tenha nenhum problema, o compilador gera o Programa Objeto podendo ser um arquivo executável, reproduzível em um Sistema Operacional, por exemplo. Porém, caso ocorra a necessidade de mudança de código, ainda que seja uma única linha de instrução, será necessária uma nova tradução e compilação do código.

Fig. 02 - Processo de execução de linguagens compiladas

Os compiladores analisam o código em três partes: forma sintática ou hierárquica, análise léxica ou linear e análise semântica.

Fig. 03 - Processos de tratamento de erro

Alguns compiladores dispõem de um pré-processamento. Este pré-processamento tem como função modificar o Programa-Fonte a depender das necessidades que o compilador identificar como necessária, como, por exemplo, otimização de código.

Exemplos de linguagens compiladas: Delphi, Rust, C++, Swift, Java e C.

Ah, mas porque este conjunto é a lebre da história??

Os compiladores não precisam ser retraduzidos após a primeira tradução (caso não tenha sido feita nenhuma modificação), então diferente da fábula da Lebre e a Tartaruga, nesse caso quem ganha é a lebre (já que as linguagens de programação não vão parar para descansar não é? rsrsrsrs)
Em situações como jogos (C++), programação mobile (Java) e desenvolvimento de softwares de computação gráfica (C), os compiladores ganham. :D

Fig. 04 – Lebre vence


Interpretadores: Diferentemente do compilador, o interpretador executa o Programa-Fonte escrito como Programa-objeto, traduzindo o programa linha a linha, ou seja, o programa vai sendo executado à medida que é traduzido. Portanto isso faz com que a cada nova execução do programa é
necessária nova tradução e interpretação de código.

Fig. 05 - Processo de execução de linguagens interpretadas

O interpretador analisa o código em duas etapas: sintática e semanticamente. Caso as duas forem realizadas e executadas com êxito o código estará pronto para o uso.

Exemplo de linguagens interpretadas: MATLAB, Lisp, Perl, PHP, Scheme e Python.

E porque esse conjunto é a Tartaruga??

O interpretador já é um conjunto mais complicado, porque a cada vez que o programa será executado, será necessária a tradução de todo o código. Entretanto, ainda sim, como na fábula, há situações em que a Tartaruga alcança o objetivo.
Já em situações de Inteligência Artificial (Python), bioinformática (Perl) e Desenvolvimento Web (PHP), é bem mais frequente a vitória dos interpretadores. :D
Fig. 06 – Tartaruga vence


That’s all Folks!
For now...


>>>> E para quem quiser saber mais sobre o assunto aqui estão as referências:
·        https://www.oficinadanet.com.br/artigo/1527/diferencas_entre_compiladores_e_interpretadores
·         http://www.inf.ufsc.br/~j.barreto/cca/arquitet/arq4.htm
·         http://blog.geekhunter.com.br/metodos-de-traducao-compiladores-ou-interpretadores/
·         https://johnidm.gitbooks.io/compiladores-para-humanos/content/part1/introduction-and-overview-about-compilers.html
·         http://www.inf.pucrs.br/manssour/LinguagemC/PoligC-Cap01.pdf
·         https://becode.com.br/principais-linguagens-de-programacao/
·         http://www.devmedia.com.br/perl-para-que/12787

Um comentário:

  1. Além da questão da velocidade tem outro fator que é a detecção de erros, que nos códigos compilados esses erros são corrigidos antes de ser publicado o código, pois os erros aparecerão na compilação. Já na interpretada alguns erros de só aparecerão no momento da execução do trecho de código.

    ResponderExcluir

Copyright. Tecnologia do Blogger.