Evidentemente, a perceptibilidade dos seres humanos e um dispositivo eletrônico como um computador é diferente. Os humanos podem entender qualquer coisa através das línguas naturais, mas um computador não. O computador precisa de um tradutor para converter as linguagens escritas no formato legível para o formato legível por computador.
Compilador e intérprete são os tipos de tradutor de linguagem. O que é tradutor de idiomas? Esta questão pode estar surgindo em sua mente.
Um tradutor de idioma é um software que traduz os programas de uma linguagem de origem que estão em formato legível em um programa equivalente em uma linguagem de objetos. O idioma de origem é geralmente uma linguagem de programação de alto nível, e a linguagem de objeto é tipicamente a linguagem de máquina de um computador real.
Gráfico de comparação
Base para comparação | Compilador | Intérprete |
---|---|---|
Entrada | Leva um programa inteiro de cada vez. | Leva uma única linha de código ou instrução de cada vez. |
Saída | Ele 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. |
Rapidez | Comparativamente mais rápido | Mais devagar |
Memória | Requisito de memória é mais devido à criação de código de objeto. | Requer menos memória, pois não cria código de objeto intermediário. |
Erros | Exibe todos os erros após a compilação, todos ao mesmo tempo. | Exibe o erro de cada linha, um por um. |
Detecção de erro | Difícil | Mais fácil comparativamente |
Pertencendo linguagens de programação | C, C ++, C #, Scala, typescript usa o compilador. | Java, 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 na máquina ou na linguagem de baixo nível e relata os erros presentes no programa. Converte todo o código-fonte de uma só vez ou pode ter vários passes para fazer isso, mas, por fim, o usuário obtém o código compilado que está pronto para ser executado.
Compiler opera em fases; vários estágios podem ser agrupados em duas partes que são:
- A 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, a semântica e a sintaxe do código após o qual o código intermediário é gerado. 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 de destino é gerado. A fase de síntese inclui o otimizador de código e o gerador de código.
FASES DO COMPILADOR
Agora vamos entender o funcionamento de cada etapa em detalhes.
- Analisador Lexical : Escaneia o código como um fluxo de caracteres, agrupa a sequência de caracteres em lexemas e gera uma seqüência de tokens com referência à linguagem de programação.
- Sintaxe Analyzer : Nesta fase, os tokens gerados no estágio anterior são verificados em relação à gramática da linguagem de programação, independentemente de as expressões estarem sintaticamente corretas ou não. Faz árvores de análise para isso.
- Analisador Semântico : Verifica se as expressões e instruções geradas na fase anterior seguem a regra da linguagem de programação ou não e criam árvores de análise anotadas.
- Gerador de código intermediário : gera código intermediário equivalente do código-fonte. Existem muitas representações de código intermediário, mas TAC (Three Address Code) é o mais utilizado amplamente.
- Otimizador de código : melhora o tempo e espaço requerido pelo programa. Por fazer isso, elimina o código redundante presente no programa.
- Gerador de código : esta é a fase final do compilador na qual o código de destino para uma máquina específica é gerado. Ele executa operações como gerenciamento de memória, atribuição de registro e otimização específica da máquina.
A tabela de símbolos é, de certa forma, uma estrutura de dados que gerencia os identificadores junto com o tipo relevante de dados que está armazenando. Error Handler detect, report, corrige os erros encontrados entre as diferentes fases de um compilador.
Definição de intérprete
O interpretador é uma alternativa para implementar uma linguagem de programação e faz o mesmo trabalho que um compilador. O interpretador executa lexing, parsing e verificação de tipo semelhante a um compilador. Mas o interpretador processa a árvore de sintaxe diretamente para acessar expressões e executar instruções em vez de gerar código a partir da árvore de sintaxe.
Um intérprete pode requerer o processamento da mesma árvore de sintaxe mais de uma vez, e essa é a razão pela qual a interpretação é comparativamente mais lenta do que executar o programa compilado.
Compilação e interpretação provavelmente combinadas para implementar uma linguagem de programação. Em que um compilador gera código de nível intermediário, o código é interpretado em vez de compilado para código de máquina.
Empregar um intérprete é vantajoso durante o desenvolvimento do programa, onde a parte mais importante é ser capaz de testar rapidamente uma modificação do programa, em vez de executar o programa com eficiência.
Principais diferenças entre compilador e intérprete
Vamos ver as principais diferenças entre o Compiler e o Interpreter.
- O compilador usa um programa como um todo e o traduz, mas o interpretador traduz uma instrução de programa por instrução.
- Código intermediário ou código de destino é gerado no caso de um compilador. Como contra intérprete não cria código intermediário.
- Um compilador é comparativamente mais rápido que o Interpreter, já que o compilador pega o programa inteiro de uma só vez, enquanto os interpretadores compilam cada linha de código após o outro.
- O compilador requer mais memória que o interpretador devido à geração de código de objeto.
- O compilador apresenta todos os erros simultaneamente, e é difícil detectar os erros nos erros de exibição do interpretador de contraste de cada instrução, um por um, e é mais fácil detectar erros.
- No compilador quando ocorre um erro no programa, ele pára sua tradução e depois de remover o erro todo o programa é traduzido novamente. Pelo contrário, quando ocorre um erro no intérprete, ele impede sua tradução e, depois de remover o erro, a tradução é retomada.
- Em um compilador, o processo requer duas etapas em que primeiramente o código-fonte é traduzido para o programa alvo e executado. While in Interpreter É um processo de um passo em que 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 Java, PHP, Ruby, Python, etc.
Conclusão
O compilador e o intérprete têm a intenção de fazer o mesmo trabalho, mas diferem no procedimento operacional, o Compilador toma o código-fonte de uma maneira agregada, enquanto o Interpretador toma as partes constituintes do código-fonte, ou seja, instrução por instrução.
Embora o compilador e o interpretador tenham certas vantagens e desvantagens, as linguagens interpretadas são consideradas como multi-plataforma, ou seja, o código é portátil. Ele também não precisa compilar instrução antes diferente do compilador, o que economiza tempo. Linguagens compiladas são mais rápidas em relação ao processo de compilação.