sábado, 21 de junho de 2014

Compiladores e Interpretadores

Um compilador transforma o código fonte (da linguagem que você está programando) em um código em que o computador entenda. Já um interpretador, transforma um código fonte em código que só ele (o programa que você está utilizando para escrever o código) entende. Assim, 
quando um programa interpretado for iniciado, ele necessita de uma DLL (Data Definition Language - Linguagem de definição de dados) para poder rodar, que irá traduzir esse código para uma linguagem que o computador entenda. 

Para melhor compreensão do compilador, vejamos um exemplo bem simples. Imagine que você trabalha dentro do computador. O computador só entende instruções em Inglês, mas o código fonte, que o programador digitou, está totalmente em Português. Suponhamos que o código digitado é: "Ele é o meu chefe". Um compilador traduziria esse código em Português para Inglês, e o programa ficaria assim: "He is my boss". 

Já um Interpretador faria o inverso. Ele traduziria esse código para um jeito que só uma DLL conseguiria entender. O Programa iria sair assim: "Ri is mai bós". Assim, quando o computador precisar usar este programa, ele precisaria chamar um Intérprete (no caso a DLL) para ditar para ele o que está escrito na linguagem interpretada. É isso que ocorre no Visual Basic, por exemplo. 

Linguagem de programação

Uma ferramenta importantíssima na interação do homem com a máquina é a linguagem de programação. Ela foi criada  para facilitar a nossa comunicação com o computador. A primeira linguagem de computador orientada para uso comercial é creditada à cientista americana Grace Hopper. Ela trabalhou em Harvard no UNIVAC l e ll e desenvolveu uma linguagem de programação de alto nível chamada Flow-Matic. Para facilitar o uso de computadores em aplicações cinetíficas, a IBM desenvolveu uma linguagem que simplificaria os trabalhos que envolviam fórmulas matemáticas complexas. Iniciado em 1954 e completado em 1957, o FORTRAN (FORmula TRANslator) foi a primeira linguagem de de alto nível largamente empregada.   

Existem dois tipos de linguagens de programação: as de baixo nível e as de alto nível. Os computadores interpretam tudo como números em base binária, ou seja, só entendem zero e um. As linguagens de baixo nível são interpretadas diretamente pelo computador, tendo um resultado rápido, porém é muito difícil e incômodo se trabalhar com elas. Exemplos de linguagens de baixo nível são a linguagem binária e a linguagem Assembly.

Exemplo de código em Assembly:

MOV r0, #0C ;load base address of string into r0
LOAD: MOV r1,(r0) ;load contents into r1
CALL PRINT ; call a print routine to print the character in r1
INC r0 ;point to next character
JMP LOAD ;load next character

Como pode-se notar, é uma linguagem bastante complicada.

Já as linguagens de alto nível são mais fáceis de se trabalhar e de entender, as ações são representadas por palavras de ordem (exemplo: faça, imprima, etc) geralmente em inglês, foram feitos assim para facilitar a memorização e a lógica. Elas não são interpretadas diretamente pelo computador, sendo necessário traduzi-las para linguagem binária utilizando-se de um programa chamado compilador.

Quando programamos em uma linguagem de programação de alto nível primeiramente criamos um arquivo de texto comum contendo a lógica do programa, ou seja, é onde falamos ao computador como deve ser feito o que queremos. Este arquivo de texto é chamado de código-fonte, cada palavra de ordem dentro do código-fonte é chamada de instrução. Após criarmos o código-fonte devemos traduzir este arquivo para linguagem binária usando o compilador correspondente com a linguagem na qual estamos programando. O compilador irá gerar um segundo arquivo que chamamos de executável ou programa, este arquivo gerado é interpretado diretamente pelo computador.

Existem algumas linguagens de programação que não necessitam de compiladores, como o PHP, uma linguagem dedicada à produção de websites dinâmicos, como o InfoEscola. As instruções em PHP são compiladas e executadas ao mesmo tempo.

Exemplo de código PHP (alto nível)

print ("Bem vindos visitantes do InfoEscola!");
print (" Vamos contar até 50:");
for($x=1;$x<=50;$x++) {
print $x;
print " ";
}

if(4 == 2) {
print ("Fim do mundo! 4 é igual a 2!");
} else {
print ("Ufa! 4 é diferente de 2");
}
?>

Cada linguagem de programação é diferente da outra, contendo palavras-chave próprias. Exemplos de linguagens de alto nível são C++, Java, C#, Delphi (Pascal), PHP, Visual Basic, etc.

Linguagem dos computadores

É importante saber que os computadores possuem uma linguagem própria. Essa linguagem é a forma como eles se comunicam, e é através dela que é possível interação do homem com a máquina. Essa forma de comunicação é chamada de linguagem binária. A linguagem binária é composta por apenas dois dígitos: o zero (0) e o um (1), onde o zero seria a ausência de sinal, e o um seria o sinal propriamente dito. Exemplos: (1) presença / (0) ausência; (1) ligado / (0) desligado; (1) tudo / (0) nada.

Semelhante ao sistema de numeração arábico que usamos (que, quando se chega ao 9, retorna-se ao 0), no código binário quando se chega ao 1 volta-se ao 0, já que o conjunto só possui dois algarismos.  


Um código binário (0 ou 1) é utilizado para o transporte de informações. É utilizado internamente pelos circuitos integrados do computador (mais especificamente pelo processador), referenciando instruções que ele deve tomar. Sendo o zero (0) correspondente ao estado de desligado e o um (1) correspondente ao estado de ligado. 


Quando escrevemos um programa em uma linguagem de programação qualquer, como o Visual Basic (VB), Delphi, C#, etc.  Esta linguagem de programação é reescrita em linguagem binária, através do processo de compilação ou interpretação, que por sua vez será executado pelo processador. Assim ocorre a interação do homem com a máquina.