Linguagens de programação são freqüentemente classificadas como compiladas ou interpretadas. Nas compiladas, o texto (ou código-fonte) do programa é lido por um programa chamado compilador, que cria um arquivo binário, executável diretamente pelo hardware da plataforma-alvo. Exemplos deste tipo de linguagem são C ou Fortran. A compilação e execução de um programa simples em C segue algo como:
% cc hello.c -o hello
% ./hello
Hello World
onde cc é o programa compilador, hello.c é o arquivo de código-fonte, e o arquivo criado, hello, é um executável binário.
Em contrapartida, programas escritos em linguagens interpretadas não são convertidos em um arquivo executável. Eles são executados utilizando um outro programa, o interpretador, que lê o código-fonte e o interpreta diretamente, durante a sua execução. Exemplos de linguagem interpretada incluem o BASIC tradicional, Perl e Python. Para executar um programa Python contido no arquivo hello.py, por exemplo, utiliza-se algo como:
% python hello.py
Hello World
Note que o programa que executamos diretamente é o interpretador python, fornecendo como parâmetro o arquivo com código-fonte hello.py. Não há o passo de geração de executável; o interpretador transforma o programa especificado à medida em que é executado.