Qual a diferença entre entre linguagens interpretadas e linguagens compiladas?
Published: 2022-02-22 17:25:46

Fala pessoal, tudo bem com vocês? Sei que passei bastante tempo sem postar nada aqui no blog e até mesmo um pouco distanciado das redes sociais, para quem me conhece sabe que comecei a aprender desenvolvimento web a mais ou menos um ano e que em outubro do mesmo ano que dei inicio os meus estudos tive a oportunidade de adentrar em um estágio de desenvolvimento, logo nesses ultimos três (quase quatro) meses eu me dediquei a aprender a stack do projeto e meio que deixei alguns conteúdo “low level” de lado, porém finalmente tô com motivação para voltar a estudar/escrever sobre esse tópicos novamente, logo vocês provavelmente irão ser capazes de me ver postando mais vezes por aqui hahah!

Eu sempre gosto de falar que esse blog pessoal é mais como se fosse um diário de estudos, pelo qual eu “repasso” de maneira simples todo o conteúdo que absorvi durante os estudos de determinado tema, logo já peço desculpas antecipadas por possíveis erros ortográficos e quem sabe até mesmo um erro que eu chegue a cometer no decorrer desse tópico e dos demais tópicos presentes nesse blog.

Acho interessante sempre ressaltar de onde que veio a inspiração para falar sobre o tema, com a volta dos meus estudos “low level” eu fiquei bastante interessado em aprender a linguagem “Rust” pelo motivo de muitos ressaltarem a sua capacidade de forçar o desenvolvedor a escrever um código “certo”. Acontece que eu comecei a desenvolver utilizando Python e em seguida Javascript que por sua vez são ambas linguagens intepretadas, ao acompanhar o repositório de Rust no 4Noobs logo no inicio na introdução o Rust é definido como uma linguagem “rápida, compilada, gerencia a memória de maneira muito eficiente, sem Garbage Collector e sem runtime.”. Só nessa setença possue diversos temas pelo qual irei abordar aqui, porém para a postagem de hoje vamos focar em entender a diferença de uma linguagem interpretada como javascript e uma linguagem compilada como Rust. 

Em um primeiro momento é importante dizer que qualquer programa, e entenda que quando eu digo qualquer me refiro a qualquer mesmo programa que seja, no final será sempre um conjunto de instruções, com isso dito, saiba que qualquer compilador ou intepretador nada mais faz do que obter código de fácil leitura por nós humanos e transforma o mesmo em um código que a máquina entenda e seja capaz de executar as funções ali escritas.

Em um código compilado ao finalizar de trabalhar nele, entenda que o seu código já está sendo traduzido para um código de máquina, enquanto em um código interpretado o seu código fonte sempre será “human-readable”, porém para que o mesmo seja executada, precisará de um motor respónsavel por interpretar e executar as funções contidas dentro do mesmo.

Imagine que você comprou um guarda-roupa, e o mesmo chegou na sua casa desmontado, para realizar a montagem desse guarda-roupa você irá necessitar de usar o manual que contido dentro da caixa, ao abrir o manual você se depara com o seguinte problema, o conteúdo de leitura dentro do mesmo está escrito em grego, lingua essa pelo qual você não possue conhecimento algum, para realizar a montagem você tem duas opções:

A primeira opção é encontrar alguém que seja capaz de traduzir aquilo e escrever em algum local na sua língua nativa, através disso você será capaz de ler as instruções e seguir com a montagem, entenda essas instruções como o código compilado, você consegue acompanhar as intruções perfeitamente, todos os passos são compreensíveis instatâneamente para você já que se encontram em sua língua nativa.

Já a segunda opção é alguém sentar ao seu lado e ir traduzindo as instruções no decorrer do que você vai fazendo a montagem, logo você possue um interpretador.

Linguagens compiladas são diretamente convertidas para linguagem de máquina, linguagem essa que o processador é capaz de entender, que por sua vez as tornam mais rápidas e eficientes, possibilitando o desenvolvedor ter um maior controle do hardware como gerenciamento de memória e uso da CPU.

Já as linguagens interpretadas por sua vez são executadas linha a linha, executando assim cada comando por sua vez, tornando-as significamente menos velozes que as linguagens compiladas. 

Agora falando um pouco das vantagens e desvantagens de cada um dos tipos, linguagens compiladas tendem a serem um pouco mais rápidas que as linguagens intepretadas, isso se deve a etapa de tradução.  Por outro lado, pela não necessidade das linguagens compiladas serem traduzidas, as mesmas demandam tempo para serem compiladas e a plataforma pela qual executará o código sempre precisará do seu binário, enquanto as linguagens interpretadas por sua vez são mais flexiveis, oferecem uma tipagem dinâmica e um código menor, isso devido ao código ser independe do interpretador.

Créditos: https://www.freecodecamp.org/news/compiled-versus-interpreted-languages/