Criando na fase final uma certaprograma, qualquer programador tem que usar os serviços de um compilador. Na documentação técnica, este programa recebe uma definição bastante modesta como um utilitário de compilação. A compilação é o processo de transformar um programa escrito em uma linguagem legível por humanos (linguagem de alto nível) em instruções legíveis por máquina (linguagem de baixo nível). Como resultado, obtemos um programa próximo ao código de máquina. Pode parecer um módulo de objeto, código absoluto. Às vezes, esse programa é semelhante à linguagem assembly.
Então a compilação é quando a entradaa informação (código-fonte) que representa uma descrição de um algoritmo ou programa escrito em uma linguagem específica de domínio é reescrita em uma lista equivalente de comandos apresentados em um código-objeto (linguagem orientada à máquina).
Para simplificar ainda mais a definição, compilar é traduzir um programa de máquina de uma linguagem específica de domínio para uma linguagem orientada à máquina.
Apesar da transparência e facilidade de definição,a compilação é um processo bastante multifacetado. Existem vários tipos dele. A compilação em lote é executada em vários módulos de origem em um item de trabalho. A compilação linha a linha é o mesmo que a interpretação (compilação de cada instrução subsequente, passo a passo, independentemente). Há também compilação condicional. Nesse caso, o texto traduzido depende das condições especificadas no programa fonte pelas diretivas do compilador.
Ao alterar o valor de uma determinada constante, você pode controlar a inclusão ou desativação da tradução de uma parte do texto do programa.
Para conveniência dos programadores, os compiladores mais convenientes e adaptados são usados na solução de vários problemas. Se os classificarmos, podemos distinguir vários tipos dessas utilidades.
O compilador de vetorização traduz o código-fonte em código de máquina, adaptando-o aos processadores de vetores.
Um compilador flexível foi desenvolvido com base emprincípio modular. Sua gestão é realizada por tabelas. É programado em uma linguagem de alto nível. Também é possível implementá-lo usando um compilador compilador.
Um compilador incremental retraduz fragmentos de programa e adições a ele, enquanto a recompilação de todo o programa é excluída.
Um compilador interpretativo ou passo a passo usa o princípio de realizar compilação independente sequencialmente para cada instrução individual ou instrução do programa fonte.
Um compilador compilador é um compilador que aceita uma descrição formal para uma linguagem de programação. É capaz de gerar independentemente um compilador para uma linguagem específica.
O compilador de depuração pode manipular alguns tipos de erros de sintaxe por conta própria.
O compilador residente tem um local permanente na RAM e está disponível para reutilização por uma ampla variedade de tarefas.
Existem compiladores autocompilados. Eles são escritos no mesmo idioma do qual a tradução ocorre.
O compilador universal é baseado em uma descrição formal da semântica e sintaxe da linguagem de entrada. Ele consiste em um núcleo, carregadores sintáticos e semânticos.
As tarefas mais comuns em queos compiladores encontram um uso para si mesmos - esta é a compilação do kernel para a plataforma Linux. Esta operação permite resolver uma vasta gama de problemas associados à coordenação de equipamentos e à configuração da versão mais aceitável da plataforma.
A compilação Java é implementada usandocompiladores rodando em uma variedade de plataformas. Isso permite que os códigos-fonte sejam recompilados para as necessidades dos sistemas operacionais de diferentes fabricantes.