{"id":1486,"date":"2024-09-19T22:30:00","date_gmt":"2024-09-20T01:30:00","guid":{"rendered":"https:\/\/kangaroo.host\/blog\/linguagem-compilada-vs-interpretada\/"},"modified":"2024-11-01T23:09:44","modified_gmt":"2024-11-02T02:09:44","slug":"linguagem-compilada-vs-interpretada","status":"publish","type":"post","link":"https:\/\/kangaroo.host\/blog\/linguagem-compilada-vs-interpretada\/","title":{"rendered":"Linguagem compilada vs interpretada, qual a diferen\u00e7a?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">E a\u00ed, Kangaroozinho. Tudo bom? Quando come\u00e7amos a conhecer um pouco mais sobre linguagens de programa\u00e7\u00e3o e suas aplica\u00e7\u00f5es, uma das primeiras grandes d\u00favidas que surgem \u00e9 sobre qual a diferen\u00e7a entre uma linguagem interpretada e uma compilada, e com certeza voc\u00ea j\u00e1 se perguntou isso em algum momento ao ver sobre o assunto, n\u00e3o \u00e9?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para te ajudar a entender de uma vez por todas as diferen\u00e7as entre elas, e o que cada um tem como vantagem e desvantagem, acompanhe esse nosso artigo para saber tudo sobre o assunto. Vamos l\u00e1?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sum\u00e1rio<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Introdu\u00e7\u00e3o<\/li>\n\n\n\n<li>As diferen\u00e7as<\/li>\n\n\n\n<li>Pr\u00f3s<\/li>\n\n\n\n<li>Contras<\/li>\n\n\n\n<li>Conclus\u00e3o<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">O que saber antes?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de falar dos tipos de linguagens, \u00e9 importante primeiro explicarmos como um computador executa um programa, pois essa \u00e9 a principal caracter\u00edstica que diferencia os dois tipos que abordaremos neste artigo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na pr\u00e1tica, o seu computador n\u00e3o executa um programa em C, Go, <a href=\"https:\/\/www.php.net\/\" target=\"_blank\" rel=\"noopener\">PHP<\/a>, Python ou outras linguagens, mas sim em uma linguagem de m\u00e1quina, que \u00e9 bem diferente daquela em que escrevemos o c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Assim, uma linguagem de programa\u00e7\u00e3o serve para escrevermos o c\u00f3digo de maneira mais f\u00e1cil e leg\u00edvel, mas posteriormente esse c\u00f3digo \u00e9 transformado em linguagem de m\u00e1quina para que seja realmente executado no dispositivo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qual a diferen\u00e7a entra a linguagem compilada e interpretada?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/kangaroo.host\/blog\/wp-content\/uploads\/2024\/09\/Os-tipos-de-linguagem-de-programacao-interpretada-e-compilada-scaled.jpg\" alt=\"Os tipos de linguagem de programacao interpretada e compilada\" class=\"wp-image-9541\"\/><figcaption class=\"wp-element-caption\">Fonte: Reposit\u00f3rio de imagens<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A grande diferen\u00e7a entre as linguagens compiladas e interpretadas \u00e9 a forma como o c\u00f3digo-fonte \u00e9 executado no computador, ou outro dispositivo que possa executar o c\u00f3digo. Assim, a forma como a linguagem oferece o arquivo final para sua execu\u00e7\u00e3o \u00e9 o caracteriza a linguagem como de um tipo ou outro.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A linguagem compilada<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para esse tipo, o que acontece \u00e9 que ap\u00f3s escrever todo o c\u00f3digo-fonte da sua aplica\u00e7\u00e3o, voc\u00ea precisar\u00e1 executar os comandos de compila\u00e7\u00e3o do c\u00f3digo, e para fazer isso voc\u00ea precisar\u00e1 antes ter no seu ambiente um compilador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A fun\u00e7\u00e3o do compilador ser\u00e1 ler todo o seu c\u00f3digo-fonte e transformar isso em um arquivo final (normalmente, execut\u00e1vel), que \u00e9 escrito usando o c\u00f3digo de m\u00e1quina. Ou seja, o compilador ir\u00e1 entender o seu c\u00f3digo na linguagem que escreveu, e transformar isso em um execut\u00e1vel escrito em c\u00f3digo de m\u00e1quina. Alguns dos principais exemplos de linguagens assim s\u00e3o C, C++, Golang e Rust.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Linguagem interpretada<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">J\u00e1 no caso de uma linguagem interpretada, a grande diferen\u00e7a \u00e9 que o seu c\u00f3digo \u00e9 lido (da\u00ed o termo interpretado) em tempo de execu\u00e7\u00e3o, e para isso \u00e9 preciso instalar o interpretador da linguagem direto na m\u00e1quina onde o c\u00f3digo ser\u00e1 executado de fato.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esse interpretador ir\u00e1 ler o c\u00f3digo linha por linha e executar tudo isso como se fosse escrito diretamente c\u00f3digo de m\u00e1quina nesse dispositivo, sem a necessidade de gerar um arquivo para essa execu\u00e7\u00e3o. Para esse tipo, temos linguagens bastante conhecidas, como PHP, JavaScript, Python e Ruby.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quais as vantagens?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Por serem essencialmente diferentes, existem vantagens e desvantagens em cada uma delas, e entender quais s\u00e3o esses principais itens pode impactar diretamente na escolha de que tipo de linguagem se adequa melhor ao seu estilo e projeto. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para as vantagens de linguagens compiladas, temos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Execut\u00e1veis possivelmente mais r\u00e1pidos<\/strong>: como os arquivos finais j\u00e1 est\u00e3o escritos na linguagem de m\u00e1quina, que \u00e9 a que ser\u00e1 executada no computador, existe um esfor\u00e7o menor de processamento para essa execu\u00e7\u00e3o, permitindo que um funcionamento mais r\u00e1pido;<\/li>\n\n\n\n<li><strong>Instale o compilador s\u00f3 uma vez<\/strong>: ao compilar a aplica\u00e7\u00e3o, o arquivo bin\u00e1rio poder\u00e1 ser executado em qualquer dispositivo com mesma arquitetura, n\u00e3o sendo preciso recompilar o c\u00f3digo para cada dispositivo ou instalar o compilador em todos eles.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">J\u00e1 para as linguagens interpretadas, as vantagens s\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Us\u00e1vel diretamente a partir do c\u00f3digo<\/strong>: sem a necessidade de criar um arquivo execut\u00e1vel, todo o programa pode ser executado diretamente pelo pr\u00f3prio c\u00f3digo-fonte, sendo acionado junto do interpretador;<\/li>\n\n\n\n<li><strong>Execu\u00e7\u00e3o em diferentes arquiteturas<\/strong>: por ser executado diretamente a partir do c\u00f3digo-fonte, n\u00e3o a necessidade de exporta\u00e7\u00e3o para uma arquitetura espec\u00edfica, podendo o mesmo material ser reutilizado em qualquer plataforma.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">As desvantagens<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Como nem tudo \u00e9 t\u00e3o simples de se escolher quanto poderia, nossos dois tipos de linguagens possuem distin\u00e7\u00f5es bastantes claras, e assim como cada uma delas teve seus pontos positivos, a compara\u00e7\u00e3o entre ambas tamb\u00e9m nos mostram pontos que podem (ou n\u00e3o) ser considerados desvantagens, dependendo de sua necessidade e inten\u00e7\u00e3o com rela\u00e7\u00e3o a uma linguagem.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">As desvantagens de linguagens compiladas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ela \u00e9 compilada<\/strong>: bom, o primeiro motivo \u00e9 bastante forte como sendo um &#8220;contra&#8221;, j\u00e1 que depois de criar todo o c\u00f3digo \u00e9 preciso normalmente exportar isso para que seja executado em outra m\u00e1quina;<\/li>\n\n\n\n<li><strong>Restrito a arquitetura<\/strong>: ao compilar o c\u00f3digo, aquele arquivo execut\u00e1vel final apenas ser\u00e1 compat\u00edvel com m\u00e1quinas de mesmo sistema operacional e arquitetura de processador, sendo por esse motivo que v\u00e1rias vezes precisamos escolher o sistema operacional e se ele est\u00e1 em 32 ou 64 bits quando vamos instalar um programa.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Desvantagens das linguagens interpretadas<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Velocidade<\/strong>: o primeiro grande ponto \u00e9 que linguagens dessa categoria precisam ser traduzidas pelo interpretador, adicionando uma camada extra de tempo e processamento (por mais r\u00e1pido ou leve que possa ser o processo), o que tende a aumentar mesmo que pouco o tempo total para execu\u00e7\u00e3o de c\u00f3digo em compara\u00e7\u00e3o a uma linguagem compilada;<\/li>\n\n\n\n<li><strong>Depend\u00eancia do interpretador<\/strong>: sem o interpretador, acaba n\u00e3o sendo poss\u00edvel utilizar o c\u00f3digo em uma determinada m\u00e1quina, sendo esse o custo da alta capacidade de compatibilidade com diferentes sistemas e arquiteturas. Dessa forma, \u00e9 indispens\u00e1vel instalar essa ferramenta para que o c\u00f3digo possa ser utilizado. <\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Qual tipo escolher?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Infelizmente, essa \u00e9 uma resposta que apenas voc\u00ea (ou seu programador, claro) poderia encontrar, j\u00e1 que cada linguagem tem sua pr\u00f3pria estrutura, sintaxe, estilo, frameworks e, principalmente, uma proposta. Assim, tudo o que nos cabe \u00e9 ajud\u00e1-lo a conhecer as principais diferen\u00e7as entre elas para te guiar na melhor tomada de decis\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o, esperamos que o artigo tenha sido \u00fatil para o seu aprendizado, e quem sabe at\u00e9 utilizar isso em seu pr\u00f3ximo projeto. Se gostou do artigo, n\u00e3o deixe de continuar acompanhando o <a href=\"\/blog\">nosso blog<\/a> para encontrar muito mais conte\u00fado como esse, e nos vemos na pr\u00f3xima!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>E a\u00ed, Kangaroozinho. Tudo bom? Quando come\u00e7amos a conhecer um pouco mais sobre linguagens de programa\u00e7\u00e3o e suas aplica\u00e7\u00f5es, uma das primeiras grandes d\u00favidas que surgem \u00e9 sobre qual a diferen\u00e7a entre uma linguagem interpretada e uma compilada, e com certeza voc\u00ea j\u00e1 se perguntou isso em algum momento ao ver sobre o assunto, n\u00e3o [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1488,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[419,32,132],"class_list":["post-1486","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimento","tag-compilada","tag-site","tag-tipos"],"_links":{"self":[{"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/posts\/1486","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/comments?post=1486"}],"version-history":[{"count":0,"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/posts\/1486\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/media\/1488"}],"wp:attachment":[{"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/media?parent=1486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/categories?post=1486"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kangaroo.host\/blog\/wp-json\/wp\/v2\/tags?post=1486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}