CloudWare

Processo de Compilação

Terça, 16 Agosto 2011

Este artigo tem como objetivo introduzir o conceito de compilação, explicando os passos necessários para que um programa possa ser compilado.

processo compilacao

Quando se fala em programas, geralmente se está falando dos códigos-fonte escritos em linguagens de programação de alto nível, ou seja, com um nível de abstração muito grande, mais próximo do modo “humano” de se pensar. Em contrapartida, existe o código executável que é um código feito numa linguagem de baixo nível de abstração, muito mais próxima do modo de funcionamento das máquinas do que do raciocínio humano.

Existem duas formas de se transformar um programa escrito em uma linguagem de alto nível em um código capaz de ser executado por um dispositivo computacional, são elas: o compilador e o interpretador.

Este artigo tem como objetivo introduzir o conceito de compilação, explicando os passos necessários para que um programa possa ser compilado. Duas linguagens, Java e C#, foram escolhidas para demonstrarem como o processo de compilação pode ser feito de diferentes formas.

PROCESSO DE COMPILAÇÃO

Compilação é o processo de tradução de um código fonte escrito normalmente em uma linguagem de alto nível (de fácil entendimento por parte do programador) para uma linguagem de baixo nível. Um compilador é um programa responsável por executar os processos de compilação descritos a seguir.

FASES DA COMPILAÇÃO

  1. Análise Léxica

Esta é a primeira etapa da compilação. A função do analisador léxico, também conhecido como scanner, é analisar todo o código fonte e produzir símbolos (tokens) que podem ser manipulados na etapa seguinte. Nesta etapa são eliminados os espaços em branco e comentários.

  1. Análise Sintática

O analisador sintático (parsing) é quem dá significado às sequências de tokens criadas anteriormente.

  1. Análise Semântica

Esta etapa é responsável por analisar a semântica, ou significado, de cada elemento do código. É ele quem encontra erros como, por exemplo, uma multiplicação entre tipos de dados diferentes.

  1. Geração do Código Intermediário

Nesta etapa ocorre a conversão da árvore sintática, criada na etapa 2, em uma representação intermediário do código fonte.

  1. Otimização do Código

Nesta etapa o código é otimizado para uma determinada arquitetura (hardware e sistema operacional especifico).

  1. Geração de Código Final

Nesta ultima etapa da compilação, o arquivo executável (.exe) é criado, otimizado para aquela arquitetura.

COMPILAÇÃO NO JAVA

Na linguagem Java o processo de compilação ocorre da seguinte maneira:

1.    O código fonte (extensão .java) é compilado utilizando o javac (Java Compiler) e armazenado em um arquivo de extensão .class, também conhecido como bytecode.

2.    Em seguida a JVM (Java Virtual Machine), interpreta os bytecodes produzidos pelo compilador.

3.    O JIT (Just-In-Time) converte, em tempo de execução, o código em bytecode para código de máquina.

4.    Por ultimo, fica a cargo do Sistema Operacional em questão executar o programa.

processo compilacao java

COMPILAÇÃO NO C#

Na linguagem C# o processo de compilação é bastante semelhante ao do Java. Uma das grandes diferenças é a possibilidade de utilizar várias linguagens distintas em um mesmo programa, como pode ser observado mais abaixo.

1.    O código-fonte (extensão .cs) é compilado em uma linguagem intermediária (IL). “O código IL, juntamente com recursos como bitmaps e sequências de caracteres, são armazenados em disco em um arquivo executável chamado de assembly, normalmente com uma extensão .exe ou .dll.” (MSDN)

2.    Diferente do Java, que utiliza a JVM, o C# utiliza o .NET Framework que trás consigo o CLR (Common Language Runtime), o componente encarregado de gerenciar aplicações desenvolvidas em .NET.

No CLR existe o JIT que é o responsável por converter, em tempo de execução, o código em IL para código de máquina, bem parecido com o Java.

3.    Com o código nativo gerado, fica a cargo do Sistema Operacional executar o programa.

processo compilacao csharp

Android

Java

Hibernate

Joomla!

CSS3

HTML5

Saia na Frente

html5 css3

Sobre Mim

sobre-foto-2Adriel Café é Web Master e Desenvolvedor Java. Ele incentiva o uso/estudo de Web Standards, Java e Android.

Saiba Mais

Encontre-me

facebook linkedin