Construção de compiladores/O que é um compilador

Origem: Wikilivros, livros abertos por um mundo aberto.

As máquinas (computadores) processam os dados e executam programas em linguagem "de máquina", que em hardware de BASE dois é "binária".

A compilação é um processo que visa facilitar o trabalho do programador, já que a geração de "códigos" em forma binária exigiria atenção prodigiosa.

Os compiladores fazem a parte pesada do trabalho, tornando mais fácil para o programador criar os códigos em linguagem de nível bem mais alto do que o binário, e fazendo as necessárias "tradução" e correções para que a máquina os consiga ler e executar.

Um compilador é um tipo de tradutor que lê um programa escrito numa linguagem, a linguagem fonte, e transforma-o em um outro programa equivalente escrito em outra linguagem, a linguagem objeto.

Existem outros tipos de tradutores sendo um deles o interpretador que, obtém um programa escrito em alguma linguagem e o converte para código executável. A principal diferença entre um compilador e um interpretador é que os compiladores geram códigos que podem ser executados diretamente pelo computador, enquanto que, no interpretador o programa fonte precisa ser traduzido toda vez que for executado. Linguagem como Pascal, COBOL, C e C++ são compiladas enquanto que linguagens como PHP, Perl, Javascript e Python são interpretadas.

Abaixo um exemplo de um programa em linguagem de alto nível e seu equivalente em linguagem de baixo nível, ou seja, depois do processo de compilação.

Linguagem de alto nível

c = a + b;

Linguagem de baixo nível

mov ax, $a
add ax, $b
mov $c, ax

É importante notar que o programa fonte e o programa objeto são completamente diferentes, porém possuem o mesmo significado.

Além da tradução é importante destacar a tarefa do compilador na detecção de erros feitos pelo programador, caso isso ocorra o programa objeto não é gerado e uma ou mais mensagens de erro são exibidas.