sábado, 9 de agosto de 2008

Diferenças entre compiladores e interpretadores (vantagens e desvantagens)

Compiladores são tipos de tradutores que possuem uma forma específica de conversão, visto que, atuam na transformação de uma linguagem de alto nível para uma linguagem de baixo nível – linguagem de máquina. Assim como o compilador, um interpretador analisa sintática e semanticamente um programa escrito em uma determinada linguagem de programação, no entanto, segundo [1], algumas diferenças são observadas, principalmente no que se refere à forma de se executar o programa em questão: o compilador executa o programa somente após ter traduzido o mesmo por inteiro; já o interpretador, lê, traduz e executa cada linha de código sequencialmente, ou seja, passo a passo; no compilador, há geração de um código de máquina ao final do processo de tradução; já no interpretador, não existe a criação de código executável;

Vantagens e Desvantagens

Compiladores
- Vantagens:
1) A execução do programa é mais rápida.
2) Estruturas de dados mais completas;
3) Permitem a otimização de código fonte.
- Desvantagens:
1) Várias etapas de tradução;
2) Processo de correção de erro e de depuração é mais demorado;
3) Programação final é maior, o que gera a necessidade de mais memória;

Interpretadores
- Vantagens:
1) Depuração é mais simples;
2) Consomem menos memória;
3) Resultado imediato do programa ou rotina desenvolvida.
- Desvantagem:
1) A execução do programa é mais lenta.
2) Estrutura de dados demasiadamente simples;
3) Necessário fornecer o programa fonte ao utilizador;


Referência

[1] Como Funcionam os Compiladores e Interpretadores. Disponível em:
http://www.mat.ua.pt/lap/Teoricas/CompvsInterp.ppt. Acessado em: 20 mai 2008.

7 comentários:

Arian disse...

Dá pra usar um compilador e um interpretador ao mesmo tempo na conversão de uma linguagem?

dan disse...

então, Arian... nem dá pra usar um interpretador ao mesmo tempo com um compilador, como fazer isso não adiantaria em nada.
eles fazem a mesma coisa mas de formas diferentes e por isso são usados em situações diferentes.
por exemplo, quando você abre um site no seu browser de internet, um interpretador é quem lê e traduz. pq ele faz o processo linha por linha.
já quando você faz um programa em pascal e põe pra rodar, é um compilador que faz o processo de tradução. pq é como se ele gerasse um outro programa, semanticamente equivalente, mas numa linguagem que pode ser processada pelo computador.
acho que é isso... espero que tenha dado pra entender, qualquer coisa é só perguntar. :)

Diego disse...

Arian, compiladores e interpretadores utilizam formas diferentes para traduzir uma linguagem de programação (o primeiro gera código objeto e o segundo não!). Logo, não se deve utilizar ao mesmo tempo esses dois tipos de tradutores. Espero ter ajudado. Até mais...

Icaro Torres disse...

po haver algum que seja ao mesmo tempo compilador e te também função de interpretador....?

Icaro Torres disse...

ah eh...
interpretadores podem sofrer com incompatibilidade de arquiteturas de sistemas? ou algo assim?
se der responde...
vlw

davidness disse...

O exemplo mais simples de linguagem que utiliza interpretador e compilador é java.
ela utiliza um compilador para gerar os chamados bytecodes. Estes são interpretados pela máquina virtual da linguagem.

Mário disse...

Qual das opçoes escolhia? saiu m esta pergunta num exame...

Uma vantagem de se usar um interpretador em vez de um compilador de uma
linguagem de programac˜ao, em geral, é:
(a)a execuc˜ao do programa usar menos recursos
(b)o ciclo de desenvolvimento (testar, editar, executar) ser mais rápido
(c)a maior rapidez na execuc˜ao

a opçao (a) ta fora q questao mas qual ta certa? (b) ou (c)?