Linguagens de programação interpretadas versus compiladas: qual é a diferença?

Cada programa é um conjunto de instruções, seja para adicionar dois números ou enviar uma solicitação pela Internet. Compiladores e intérpretes pegam código legível por humanos e o convertem em código de máquina legível por computador.

Em uma linguagem compilada, a máquina de destino traduz diretamente o programa. Em uma linguagem interpretada, o código-fonte não é traduzido diretamente pela máquina de destino. Em vez disso, um programa diferente , também conhecido como interpretador, lê e executa o código.

Ok ... mas o que isso realmente significa?

Imagine que você tem uma receita de homus que deseja fazer, mas está escrita em grego antigo. Há duas maneiras de você, que não fala grego antigo, seguir suas instruções.

A primeira é se alguém já o traduziu para o inglês para você. Você (e qualquer pessoa que fale inglês) pode ler a versão em inglês da receita e fazer homus. Pense nesta receita traduzida como a versão compilada .

A segunda maneira é se você tiver um amigo que saiba grego antigo. Quando você estiver pronto para fazer homus, seu amigo se senta ao seu lado e traduz a receita para o inglês conforme você faz, linha por linha. Nesse caso, seu amigo é o intérprete da versão interpretada da receita.

Linguagens Compiladas

Linguagens compiladas são convertidas diretamente em código de máquina que o processador pode executar. Como resultado, eles tendem a ser mais rápidos e eficientes de executar do que as linguagens interpretadas. Eles também fornecem ao desenvolvedor mais controle sobre os aspectos de hardware, como gerenciamento de memória e uso de CPU.

Linguagens compiladas precisam de uma etapa de “construção” - elas precisam ser compiladas manualmente primeiro. Você precisa “reconstruir” o programa toda vez que precisar fazer uma alteração. Em nosso exemplo de homus, a tradução inteira é escrita antes de chegar até você. Se o autor original decidir que quer usar um tipo diferente de azeite, a receita inteira precisará ser traduzida novamente e enviada novamente para você.

Exemplos de linguagens compiladas puras são C, C ++, Erlang, Haskell, Rust e Go.

Linguagens interpretadas

Os intérpretes executam um programa linha por linha e executam cada comando. Aqui, se o autor decidir que deseja usar um tipo diferente de azeite, ele pode riscar o antigo e adicionar o novo. Seu amigo tradutor pode transmitir essa mudança a você conforme ela acontece.

As linguagens interpretadas já foram significativamente mais lentas do que as linguagens compiladas. Mas, com o desenvolvimento da compilação just-in-time, essa lacuna está diminuindo.

Exemplos de linguagens interpretadas comuns são PHP, Ruby, Python e JavaScript.

Uma pequena advertência

A maioria das linguagens de programação pode ter implementações compiladas e interpretadas - a linguagem em si não é necessariamente compilada ou interpretada. No entanto, para simplificar, eles são normalmente referidos como tal.

Python, por exemplo, pode ser executado como um programa compilado ou como uma linguagem interpretada no modo interativo. Por outro lado, a maioria das ferramentas de linha de comando, CLIs e shells podem teoricamente ser classificados como linguagens interpretadas.

Vantagens e desvantagens

Vantagens das linguagens compiladas

Os programas compilados em código de máquina nativo tendem a ser mais rápidos do que o código interpretado. Isso ocorre porque o processo de tradução de código em tempo de execução aumenta a sobrecarga e pode fazer com que o programa fique mais lento no geral.

Desvantagens das linguagens compiladas

As desvantagens mais notáveis ​​são:

  • Tempo adicional necessário para completar toda a etapa de compilação antes de testar
  • Dependência da plataforma do código binário gerado

Vantagens das linguagens interpretadas

Linguagens interpretadas tendem a ser mais flexíveis e geralmente oferecem recursos como digitação dinâmica e programas de tamanho menor. Além disso, como os próprios intérpretes executam o código do programa-fonte, o código em si é independente da plataforma.

Desvantagens das linguagens interpretadas

A desvantagem mais notável é a velocidade de execução típica em comparação com as linguagens compiladas.