Um compilador é um tradutor que transforma a linguagem de origem (linguagem de alto nível) em linguagem de objeto (linguagem de máquina). Em contraste com um compilador, um intérprete é um programa que imita a execução de programas escritos em uma linguagem de origem. Outra diferença entre Compilador e intérprete é que o Compilador converte o programa inteiro de uma só vez. O Intérprete converte o programa pegando uma única linha de cada vez.
Evidentemente, a percepção dos humanos e de um dispositivo eletrônico como um computador é diferente. Os humanos podem entender qualquer coisa através de linguagens naturais, mas um computador não entende. O computador precisa de um tradutor para converter os idiomas escritos na forma legível por humanos para a forma legível por computador.
Compilador e intérprete são os tipos de um tradutor de idiomas. O que é um tradutor de idiomas? Esta pergunta pode estar surgindo em sua mente.
Um tradutor de idiomas é um software que traduz os programas de um idioma de origem que estão em forma legível por humanos para um programa equivalente em um idioma objeto. A linguagem-fonte é geralmente uma linguagem de programação de alto nível, e a linguagem objeto é tipicamente a linguagem máquina de um computador real.
Conteúdo: Compilador Vs Interpreter
>
- >
- Guia de comparação
- Definição
- Diferenças-chave
- Conclusão
>
Guia de comparação
Base de comparação | Compilador | Interprete |
---|---|---|
Entrada | Põe um programa inteiro de cada vez. | Pega uma única linha de código ou instrução de cada vez. |
Saída | Gera código objeto intermediário. | Não produz nenhum código objeto intermediário. |
Mecanismo de trabalho | A compilação é feita antes da execução. | Compilação e execução ocorrem simultaneamente. |
Velocidade | Comparavelmente mais rápido | Baixo |
Memória | Requisito de memória é mais devido à criação de código objeto. | Requer menos memória pois não cria código objecto intermédio. |
Errores | Exibir todos os erros após a compilação, todos ao mesmo tempo. | Exibir erro de cada linha um por um. |
Detecção de erros | Dificuldade | Easier comparativamente |
Diversas linguagens de programação | C, C++, C#, Scala, Scala, usa compilador. | PHP, Perl, Python, Ruby usa um interpretador. |
Definição de compilador
Um compilador é um programa que lê um programa escrito na linguagem de alto nível e o converte para a linguagem da máquina ou de baixo nível e relata os erros presentes no programa. Ele converte todo o código fonte de uma só vez ou pode tomar várias passagens para fazê-lo, mas finalmente, o usuário obtém o código compilado que está pronto para ser executado.
>
Compiler opera em fases; várias fases podem ser agrupadas em duas partes que são:
- Fase de Análise do compilador também é referida como o front end no qual o programa é dividido em partes constituintes fundamentais e verifica a gramática, semântica e sintaxe do código após o qual o código intermediário é gerado. A fase de análise inclui analisador léxico, analisador semântico e analisador de sintaxe.
- A fase de síntese do compilador também é conhecida como back end na qual o código intermediário é otimizado, e o código alvo é gerado. A fase de síntese inclui otimizador de código e gerador de código.
Fases do Compilador
Agora vamos entender o funcionamento de cada fase em detalhes.
- Analisador Léxico: Ele digitaliza o código como um fluxo de caracteres, agrupa a sequência de caracteres em lexemas e produz uma sequência de fichas com referência à linguagem de programação.
- Analisador de Sintaxe: Nesta fase, os tokens que são gerados na fase anterior são comparados com a gramática da linguagem de programação, quer as expressões estejam sintaticamente corretas ou não. Faz árvores parciais para isso.
- Analisador Semântico: Verifica se as expressões e comandos gerados na fase anterior seguem ou não a regra da linguagem de programação e cria árvores parse anotadas.
- Gerador de código intermediário: Gera um código intermediário equivalente do código-fonte. Há muitas representações de código intermediário, mas TAC (Three Address Code) é o mais utilizado.
- Code Optimizer: Melhora os requisitos de tempo e espaço do programa. Para isso, ele elimina o código redundante presente no programa.
- Code generator: Esta é a fase final do compilador na qual o código alvo para uma determinada máquina é gerado. Ele executa operações como gerenciamento de memória, atribuição de registros e otimização específica da máquina.
A tabela de símbolos é um pouco uma estrutura de dados que gerencia os identificadores junto com o tipo de dados relevantes que ela está armazenando. Error Handler detecta, relata, corrige os erros encontrados entre as diferentes fases de um compilador.
Definition of Interpreter
O interpretador é uma alternativa para implementar uma linguagem de programação e faz o mesmo trabalho que um compilador. O intérprete executa lexing, análise e verificação de tipo semelhante a um compilador. Mas o interpretador processa a árvore de sintaxe diretamente para acessar expressões e executar comandos ao invés de gerar código a partir da árvore de sintaxe.
Um interpretador pode requerer o processamento da mesma árvore de sintaxe mais de uma vez, por isso a interpretação é comparativamente mais lenta do que a execução do programa compilado.
Compilação e interpretação provavelmente combinadas para implementar uma linguagem de programação. No qual um compilador gera código de nível intermediário então o código é interpretado ao invés de compilado para código de máquina.
O emprego de um intérprete é vantajoso durante o desenvolvimento do programa, onde a parte mais importante é ser capaz de testar uma modificação do programa rapidamente ao invés de executar o programa eficientemente.
Diferenças-chave entre Compilador e Intérprete
Vejamos as principais diferenças entre Compilador e Intérprete.
- O compilador pega um programa como um todo e o traduz, mas o interpretador traduz uma declaração de programa por declaração.
- Código intermediário ou código de destino é gerado no caso de um compilador. Como contra interprete não cria código intermediário.
- Um compilador é comparativamente mais rápido que o interpretador, pois o compilador pega o programa inteiro de uma vez, enquanto os interpretadores compilam cada linha de código após a outra.
- O compilador requer mais memória que o interpretador por causa da geração de código objeto.
- O compilador apresenta todos os erros ao mesmo tempo, e é difícil detectar os erros em contraste o interpretador mostra os erros de cada instrução um por um, e é mais fácil detectar erros.
- No compilador quando um erro ocorre no programa, ele pára a sua tradução e depois de remover o erro todo o programa é traduzido novamente. Pelo contrário, quando um erro ocorre no interpretador, ele impede sua tradução e depois de remover o erro, a tradução é retomada.
- Em um compilador, o processo requer duas etapas nas quais primeiro o código fonte é traduzido para o programa de destino e depois executado. Enquanto no interpretador É um processo de um passo no qual o código fonte é compilado e executado ao mesmo tempo.
- O compilador é usado em linguagens de programação como C, C++, C#, Scala, etc. No outro Interpretador é empregado em linguagens como PHP, Ruby, Python, etc.
Conclusion
Compiler e interpretador ambos têm a intenção de fazer o mesmo trabalho mas diferem no procedimento operacional, o Compilador pega o código fonte de uma forma agregada enquanto o Interpretador pega partes constituintes do código fonte, ou seja declaração por declaração.
Embora tanto o compilador quanto o intérprete tenham certas vantagens e desvantagens, como as línguas interpretadas são consideradas como cross-platform, ou seja, o código é portátil. Ele também não precisa compilar instruções anteriormente, ao contrário do compilador, que é uma economia de tempo. Linguagens compiladas são mais rápidas em relação ao processo de compilação.