Diferenças entre compilação e interpretação
Com a popularização de linguagens como Java e C#, e sua forte adoção no mercado de TI, é comum nos depararmos com debates sobre as diferenças entre linguagens interpretadas e linguagens compiladas. Mas na hora de classificar uma linguagem como interpretada ou compilada, a coisa esquenta e ninguém entra em acordo! Mas afinal, o que é uma linguagem interpretada e o que é uma linguagem compilada?
Antes de qualquer coisa, vamos definir nosso glossário:
O dicionário da língua portuguesa define Compilar: do Latim compilare
v. tr. reunir; ajuntar
Enquanto a definição de Interpretar, é: do Latim interpretare
v. tr. tornar claro o sentido de; explicar; traduzir; fazer juízo a respeito de.
Pelas definições desses dois verbos, já podemos perceber que seus significados não se opõem, mas se complementam. Então como classificar uma linguagem de programação como sendo de um jeito ou de outro? Bem, a resposta é simples, definindo o contexto ou ponto de vista! E como estamos analisando linguagens de programação, nosso contexto é arquitetura de linguagens de programação.
Na computação, a compilação é o processo que reúne o código fonte e o transforma em algo que faça mais sentido para o computador. Do ponto de vista do código fonte, toda linguagem de programação é compilada.
O produto final do processo de compilação de uma linguagem diz muito sobre seu design. Linguagens como C e C++ são compiladas estaticamente, e seus códigos fontes são transformados diretamente em linguagem de máquina. Enquanto as linguagens mais modernas como Java, C# e Python têm seus códigos fontes transformados em uma linguagem intermediária (específica de cada linguagem), que será interpretada pela máquina virtual da linguagem quando o programa for executado.
Este processo de interpretação da linguagem intermediária durante a execução do programa consiste na tradução dos comandos da linguagem intermediária para linguagem de máquina. Sendo assim, em