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
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
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
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