Com o passar do tempo, diversas linguagens de programação foram surgindo com propostas diversas para múltiplos fins. Mas entre elas, uma característica se destaca: a grande maioria das linguagens será dividida em compiladas e interpretadas. Qual a diferença, entretanto?
O que significa?
Sabemos que os compiladores e interpretadores recebem e leem o código, traduzindo-o de uma linguagem que pode ser lida por seres humanos para uma linguagem de máquina que o computador consegue entender.
Com uma linguagem compilada, a máquina compila o código antes de executá-lo, ou seja, o próprio computador traduz o programa diretamente. Já uma linguagem interpretada tem um intermediário, que é o interpretador. Ele lê e executa o código.
Para facilitar, podemos exemplificar: imagine que você tem uma receita de bolo que está em japonês. Se você ou qualquer outra pessoa que fala o idioma consegue ler e fazer a receita por si só (linguagem compilada). Agora, você não fala japonês, mas tem um amigo que sim. Quando você estiver pronto para confeccionar o bolo, ele pode sentar ao seu lado e ir lendo as instruções para você (linguagem interpretada).
Linguagem Compilada
As linguagens compiladas são convertidas em uma linguagem que o computador pode ler, ou seja, linguagem de máquina. Isso garante que elas sejam mais rápidas e eficientes em sua execução. Também dá ao desenvolvedor mais controle e segurança, pois permite que ele consiga manipular o hardware e que os erros de código sejam mostrados no momento da compilação do programa.
No momento da montagem do código (build), este é traduzido para linguagem de máquina. Isso quer dizer que sempre que alguma parte do código for alterada, será necessário realizar o ‘build’ novamente.
Exemplos de linguagens compiladas: C e C++, Rust, Erlang, Haskell e Go
Linguagem Interpretada
Esse tipo de linguagem o interpretador le linha por linha do codigo, executando o codigo de maneira ordeira. Assim caso seja necessario algum tipo de alteracao basta tirar o antigo e colocar um novo codigo.
Com essa explicação, fica subentendido que uma linguagem interpretada é muito lenta, mas isso não é mais verdade. Antigamente, havia uma diferença até significativa, porém, com o desenvolvimento da compilação just-in-time, essa diferença vem se tornando cada vez menor.
Exemplos de linguagens interpretadas: JavaScript, Ruby, Python e PHP
Pequena observação
A maioria das linguagens de programação pode ter implementações compiladas e interpretadas, o que significa que elas não necessariamente são compiladas ou interpretadas. No entanto, por uma questão de simplificação, as pessoas geralmente se referem a elas dessa maneira.
Por exemplo, o Python pode ser executado como um programa compilado ou como uma linguagem interpretada em um modo interativo. Por outro lado, teoricamente, a maioria das ferramentas de linha de comando, ou CLIs, e shells pode ser classificada 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 que o código interpretado. Isso ocorre porque o processo de traduzir o código em tempo de execução aumenta o tempo do processo, podendo fazer com que o programa seja, em geral, mais lento.
Desvantagens das linguagens compiladas:
As desvantagens mais notáveis são:
- Tempo adicional necessário para concluir toda a etapa de compilação antes dos testes.
- Dependência da plataforma do código binário gerado.
Vantagens das linguagens interpretadas:
As linguagens interpretadas tendem a ser mais flexíveis, geralmente oferecendo recursos como digitação dinâmica e tamanho reduzido de programa. Além disso, como os interpretadores executam o código fonte do programa por conta própria, o código não depende da plataforma.
Desvantagens das linguagens interpretadas:
A desvantagem mais notável é a velocidade típica de execução em comparação com as linguagens compiladas.