Linguagem compilada vs interpretada, qual a diferença?
E aí, Kangaroozinho. Tudo bom? Quando começamos a conhecer um pouco mais sobre linguagens de programação e suas aplicações, uma das primeiras grandes dúvidas que surgem é sobre qual a diferença entre uma linguagem interpretada e uma compilada, e com certeza você já se perguntou isso em algum momento ao ver sobre o assunto, não é?
Para te ajudar a entender de uma vez por todas as diferenças entre elas, e o que cada um tem como vantagem e desvantagem, acompanhe esse nosso artigo para saber tudo sobre o assunto. Vamos lá?
Sumário
- Introdução
- As diferenças
- Prós
- Contras
- Conclusão
O que saber antes?
Antes de falar dos tipos de linguagens, é importante primeiro explicarmos como um computador executa um programa, pois essa é a principal característica que diferencia os dois tipos que abordaremos neste artigo.
Na prática, o seu computador não executa um programa em C, Go, PHP, Python ou outras linguagens, mas sim em uma linguagem de máquina, que é bem diferente daquela em que escrevemos o código.
Assim, uma linguagem de programação serve para escrevermos o código de maneira mais fácil e legível, mas posteriormente esse código é transformado em linguagem de máquina para que seja realmente executado no dispositivo.
Qual a diferença entra a linguagem compilada e interpretada?
A grande diferença entre as linguagens compiladas e interpretadas é a forma como o código-fonte é executado no computador, ou outro dispositivo que possa executar o código. Assim, a forma como a linguagem oferece o arquivo final para sua execução é o caracteriza a linguagem como de um tipo ou outro.
A linguagem compilada
Para esse tipo, o que acontece é que após escrever todo o código-fonte da sua aplicação, você precisará executar os comandos de compilação do código, e para fazer isso você precisará antes ter no seu ambiente um compilador.
A função do compilador será ler todo o seu código-fonte e transformar isso em um arquivo final (normalmente, executável), que é escrito usando o código de máquina. Ou seja, o compilador irá entender o seu código na linguagem que escreveu, e transformar isso em um executável escrito em código de máquina. Alguns dos principais exemplos de linguagens assim são C, C++, Golang e Rust.
Linguagem interpretada
Já no caso de uma linguagem interpretada, a grande diferença é que o seu código é lido (daí o termo interpretado) em tempo de execução, e para isso é preciso instalar o interpretador da linguagem direto na máquina onde o código será executado de fato.
Esse interpretador irá ler o código linha por linha e executar tudo isso como se fosse escrito diretamente código de máquina nesse dispositivo, sem a necessidade de gerar um arquivo para essa execução. Para esse tipo, temos linguagens bastante conhecidas, como PHP, JavaScript, Python e Ruby.
Quais as vantagens?
Por serem essencialmente diferentes, existem vantagens e desvantagens em cada uma delas, e entender quais são esses principais itens pode impactar diretamente na escolha de que tipo de linguagem se adequa melhor ao seu estilo e projeto.
Para as vantagens de linguagens compiladas, temos:
- Executáveis possivelmente mais rápidos: como os arquivos finais já estão escritos na linguagem de máquina, que é a que será executada no computador, existe um esforço menor de processamento para essa execução, permitindo que um funcionamento mais rápido;
- Instale o compilador só uma vez: ao compilar a aplicação, o arquivo binário poderá ser executado em qualquer dispositivo com mesma arquitetura, não sendo preciso recompilar o código para cada dispositivo ou instalar o compilador em todos eles.
Já para as linguagens interpretadas, as vantagens são:
- Usável diretamente a partir do código: sem a necessidade de criar um arquivo executável, todo o programa pode ser executado diretamente pelo próprio código-fonte, sendo acionado junto do interpretador;
- Execução em diferentes arquiteturas: por ser executado diretamente a partir do código-fonte, não a necessidade de exportação para uma arquitetura específica, podendo o mesmo material ser reutilizado em qualquer plataforma.
As desvantagens
Como nem tudo é tão simples de se escolher quanto poderia, nossos dois tipos de linguagens possuem distinções bastantes claras, e assim como cada uma delas teve seus pontos positivos, a comparação entre ambas também nos mostram pontos que podem (ou não) ser considerados desvantagens, dependendo de sua necessidade e intenção com relação a uma linguagem.
As desvantagens de linguagens compiladas
- Ela é compilada: bom, o primeiro motivo é bastante forte como sendo um “contra”, já que depois de criar todo o código é preciso normalmente exportar isso para que seja executado em outra máquina;
- Restrito a arquitetura: ao compilar o código, aquele arquivo executável final apenas será compatível com máquinas de mesmo sistema operacional e arquitetura de processador, sendo por esse motivo que várias vezes precisamos escolher o sistema operacional e se ele está em 32 ou 64 bits quando vamos instalar um programa.
Desvantagens das linguagens interpretadas
- Velocidade: o primeiro grande ponto é que linguagens dessa categoria precisam ser traduzidas pelo interpretador, adicionando uma camada extra de tempo e processamento (por mais rápido ou leve que possa ser o processo), o que tende a aumentar mesmo que pouco o tempo total para execução de código em comparação a uma linguagem compilada;
- Dependência do interpretador: sem o interpretador, acaba não sendo possível utilizar o código em uma determinada máquina, sendo esse o custo da alta capacidade de compatibilidade com diferentes sistemas e arquiteturas. Dessa forma, é indispensável instalar essa ferramenta para que o código possa ser utilizado.
Qual tipo escolher?
Infelizmente, essa é uma resposta que apenas você (ou seu programador, claro) poderia encontrar, já que cada linguagem tem sua própria estrutura, sintaxe, estilo, frameworks e, principalmente, uma proposta. Assim, tudo o que nos cabe é ajudá-lo a conhecer as principais diferenças entre elas para te guiar na melhor tomada de decisão.
Então, esperamos que o artigo tenha sido útil para o seu aprendizado, e quem sabe até utilizar isso em seu próximo projeto. Se gostou do artigo, não deixe de continuar acompanhando o nosso blog para encontrar muito mais conteúdo como esse, e nos vemos na próxima!