O que é compilação e como usar esse processo?

Se saber o que é compilação foi até agora um grande mistério para você, neste artigo vamos abordar tudo sobre compilação, principalmente aquilo que os programadores e devs que estão trabalhando nos primeiros códigos precisam saber.

Compilação é um conceito muito utilizado pelos desenvolvedores e se você está iniciando na área de dev, vai ouvir falar sobre isso logo na sua primeira semana de estágio, trainee ou trabalho.

O que é compilação?

Quando os desenvolvedores estão programando um código, seja ele em Java, PHP, C e muitas outras linguagens que estão em alta atualmente, em geral, eles estão trabalhando com a linguagem em alto nível.

Tudo bem, mas o que significa a linguagem em alto nível?

Antes de uma máquina executar um código escrito em Java, por exemplo, ele está em alto nível, inacessível para o processador, porém inteligível para a equipe de desenvolvimento.

Sendo assim, podemos dizer que a compilação é uma etapa posterior ou totalmente necessária para que a máquina entenda e rode um código que você esteja escrevendo, seja o clássico “Olá Mundo” ou uma calculadora, por exemplo.

Em Java, uma das linguagens mais conhecidas do mercado e que é ótima para nossa explicação sobre compilação, existem 2 processos bem definidos:

  • Interpretação;
  • Compilação.

A execução do código fonte acontece nesta sequência, sendo que a última é a compilação.

Um arquivo compilado, na extensão .java, por exemplo, tem um código gerado Bytecode considerado essencial para que a máquina entenda o que você, dev, quer que ela execute com aquele código.

Parece complicado, não é mesmo? Vamos simplificar a explicação.

Durante o desenvolvimento do código, você determina uma série de variáveis, valores, laços e funções que a máquina (computador ou processador) executa. 

Porém, essas instruções precisam ser “ajustadas” para que estejam em baixo nível, o que significa no nível do próprio equipamento (lembrando que o programador escreve os códigos em alto nível).

Como funciona o processo de compilação?

O processo de compilação não é tão simplificado, pois respeita uma sequência lógica de etapas que não podem conter erros, caso contrário a execução será imperfeita.

A compilação necessita de uma compilação prévia, quando comentários são removidos, são separadas orientações para o compilador, linhas são organizadas de forma sequencial, entre outros processos.

Depois, teremos a análise lexicográfica, análise sintática e semântica, que são feitas basicamente para saber se o seu código tem erros que precisam ser arrumados ainda em alto nível, antes de ser preparado para ir ao nível de máquina.

Quando isso acontece, é gerado um código chamado de intermediário, que de forma bem superficial estaria entre o alto nível e o baixo nível.

Em sequência, no processo de compilação, o código é otimizado, ou seja, é determinado seu melhor nível, em uma qualidade ótima, pronta para rodar em baixo nível sem apresentar falhas.

Vale ressaltar aqui que, no processo de compilação, cada código objeto vai respeitar um nível de arquitetura, uma vez que existem variedades de arquiteturas e cada programação é feita respeitando estes objetos.

Na compilação, o direcionamento dos arquivos objeto para o endereço real acontece em uma das últimas etapas do processo, conhecida como linkr, quando o código de máquina é gerado, definitivamente.

É possível perceber que o processo de compilação é bastante complexo e segue um fluxograma bem determinado, para que não haja erros no processo e respeitando muito bem a ordem de uma ciência exata e lógica.

Saiba quais são os principais compiladores

Os compiladores são programas que vão realizar todo este processo com o seu código, que ainda está em alto nível, para que ele fique em nível de máquina, seja ela um computador ou uma outra máquina que tenha um processador preparado para receber instruções elaboradas por um dev.

O compilador faz justamente a tradução das instruções de alto nível para que elas fiquem em nível de máquina, mas de forma que a semântica fique muito parecida.

Veja 3 opções que figuram entre os principais compiladores usados pelos programadores:

NetBeans Este é um verdadeiro clássico e muito usado para compilar programas em PHP, C++ e C.

Ideone Este é indicado para devs que querem um programa de compilação que suporte variedade, já que ele lida com mais de 50 linguagens de programação diferentes.

GCC Também é excelente e indicado para D, Go, Ada, Fortran, C++, C e Objective C.

Vantagens e desvantagens da compilação

A compilação é muito eficiente e indicada para devs que querem executar seus códigos com mais rapidez e eficiência, com redução de erros e ganho de velocidade.

Como a compilação traduz o código inteiro de uma vez só, é muito mais vantajoso do que o uso de um interpretador, por exemplo.

Além de velocidade, a compilação entrega mais confiabilidade na otimização e validação do código.

A principal desvantagem da compilação é que ela terá que ser ajustada para cada plataforma que for rodada, como Mac ou Windows, por exemplo.

É um trabalho a mais? Claro que sim, mas vale a pena pelo grau de precisão que os compiladores entregam.

Erros de compilação

Como nada no universo digital é perfeito e infalível, até mesmo os códigos mais bem escritos e os compiladores mais confiáveis podem apresentar erros.

Procedimentos recursivos também podem estar vinculados a erros de compiladores.

Existem inúmeros erros que podem envolver os compiladores, como no caso de tabela e planilha encontradas na análise sintática descendente não-recursiva.

E, claro, as definições de erros de compilação mais comuns são as seguintes:

  • Erro de lógica, quando algo da estrutura lógica do código apresenta algum problema;
  • Erro de análise semântica, quando alguma falha semântica impede a compilação do código;
  • Erro sintático, se houver algum problema na sintática do código.

Veja que não são erros próprios da compilação, mas do conjunto (dev + tecnologia). Tirando os erros, é possível perceber que os compiladores são verdadeiros aliados dos desenvolvedores!

twitterfacebooklinkedinyoutube-playinstagram