logo

Como aprender a programar

Publicado em 02.07.2023, atualizado em 27.07.2023

Entrei no mundo da programação de computadores em 2019, não muito longe no tempo, e apesar de ter cometido alguns erros em termos de aprendizagem sinto que posso compartilhar alguma experiência com quem está começando.

Nesse artigo discuto a respeito da aprendizagem de programação, faço um apanhado geral do que é programar, alguns lugares por onde você pode começar a aprender, e outras informações adicionais.

Índice

  1. O que é um programa de computador afinal?
  2. E como esses programas são escritos?
  3. Qual a melhor forma de se aprender a programar?
  4. Qual a melhor linguagem para se começar a programar?
  5. Qual a melhor linguagem de programação? Existe uma linguagem suprema, a melhor de todas, capaz de resolver todos os problemas?
  6. Ainda não sei bem qual linguagem escolher para começar, e agora?
  7. Mas eu quero começar da melhor maneira possível...deve haver a melhor forma, a forma PERFEITA!
  8. Continuo indeciso :(
  9. Me indica um editor de texto :D
  10. E qual o melhor editor de texto?
  11. Por onde começar a aprender programação?
  12. Últimas considerações
  13. Notas

O que é um programa de computador afinal?

Da mesma forma que uma pessoa pode seguir as instruções de uma receita pra fazer um bolo, um computador é capaz de ler as instruções contidas num programa (também chamado de software) e executá-las para se chegar a um determinado resultado (ex: processar números, textos, imagens, sons etc).

Os programas de computador são conjuntos de instruções que são executados em sequência por um computador, e programar é basicamente escrever, testar e dar manutenção nesse conjunto de instruções.

Desde o navegador que você está usando pra ler esse texto até seus jogos e aplicativos de celular, todos esses programas são feitos dessas instruções.

E como esses programas são escritos?

Em seu nível mais básico a única linguagem que um computador realmente entende é o código de máquina: uma linguagem baseada no sistema numérico binário, composta apenas dos algarismos 0 e 1 (zero e um). No final das contas é isso que um programa é, um monte de zeros e uns. É em binário que a maior parte dos computadores trabalha em seu nível mais básico, e é em binário que as instruções são de fato entendidas e executadas pelo computador.

Como programar diretamente em código de máquina é possível mas MUITO complicado (e alguns até diriam insano) foram criadas as linguagens de programação de alto nível, que são "idiomas" que podem ser escritos e lidos mais facilmente por humanos pra depois serem executados pelos computadores. O programador elabora o código-fonte do programa nesta linguagem de programação e posteriormente esse código é transformado em código de máquina.

Ou seja, o código-fonte do programa é escrito numa linguagem de programação de alto nível e esse código é traduzido para a linguagem que o computador efetivamente entende. Nesse processo de tradução são usados dois tipos de programas:

  • Compiladores: programas que convertem diretamente o código-fonte escrito pelo programador em código de máquina, que por sua vez é executado nativamente pelo computador. Programas compilados tendem a ter uma velocidade de execução rápida e a fazerem uso otimizado de memória e processamento. No entanto, o processo de escrever e testar os programas que serão compilados tende a ser mais lento e, uma vez compilados, o programa funcionará apenas num único sistema operacional e arquitetura de processador, sendo necessária a recompilação e/ou modificação do código-fonte para que ele funcione em outros. Programas como navegadores de internet, reprodutores de audio e vídeo, jogos e processadores de texto são, geralmente, compilados.

  • Interpretadores: programas que executam diretamente o código fonte escrito pelo programador, sem a necessidade de compilação. Programas interpretados tendem a permitir ciclos rápidos de escrita e teste dos programas, além de executarem com pouca ou nenhuma modificação em qualquer sistema operacional onde um interpretador para a linguagem esteja disponível. No entanto, programas interpretados tendem a ter velocidade de execução mais lenta e a consumirem mais memória e processamento do que programas compilados.

Representação simplificada dos processos de compilação e interpretação de programas.

Qual a melhor forma de se aprender a programar?

Praticar, praticar e praticar de novo. A prática, a experimentação e a aplicação dos conhecimentos de programação em projetos (sejam eles pessoais e/ou profissionais) são essenciais na programação, não existe outra forma de aprender. Alguns podem até começar pela teoria ou aprendê-la em paralelo, mas a prática da solução de problemas usando programação é fundamental.

O primeiro passo é escolher uma linguagem de programação, um editor de texto e começar a aprender a lógica de programação com essa linguagem. Seja através de um curso, oficina ou livro pra iniciantes, escolha sua fonte de aprendizagem e comece a aprender.

Assim que aprender a lógica de programação e os comandos básicos da linguagem, é possível que você fique meio perdido se perguntando "o que diabos eu faço com isso agora?". Pegue o que tiver em mãos e comece a fazer projetos pessoais. Faça programas que tenham alguma utilidade pra você, explore tutoriais na internet pra saber como resolver certos problemas, explore as bibliotecas e documentações da linguagem que vocẽ está usando, e por aí vai...sua imaginação é o limite. O que não falta na vida são problemas pra se resolver e, se alguns deles puderem ser resolvidos usando computadores, por que não usar?

Com o tempo, você vai notar que mesmo programas grandes são constituídos, em grande parte, de blocos lógicos básicos que se repetem ao longo do código-fonte.

Crie projetos pessoais, divida seu projeto em partes menores e implemente uma delas de cada vez. O desenvolvimento de cada uma dessas partes do projeto exigirá buscas na internet e em livros por soluções para aquele problema específico, e a medida que o projeto avançar você se tornará cada vez melhor em resolver problemas e conectar trechos de código para criar programas cada vez mais elaborados.

Uma dica baseada em experiência pessoal: a frequência com que você pratica programação é mais importante do que a quantidade praticada de uma só vez. É melhor começar praticando 30 minutos por dia do que praticar 5 horas seguidas apenas em um só dia.

Uma outra prática interessante consiste em abrir o código-fonte de programas de código aberto pra ver como eles funcionam e são estruturados. A linguagem Python, por exemplo, possui um repertório vasto de módulos e bibliotecas nativas da linguagem que são de código aberto, ou seja, o código fonte pode ser aberto, consultado e modificado.

Qual a melhor linguagem para se começar a programar?

Essa pergunta assombra todo grupo de programação na internet e invariavelmente atrai mais respostas subjetivas baseadas em gosto pessoal do que na real necessidade do iniciante.

Se lembre sempre do seguinte: no começo, o mais importante é aprender a famosa lógica de programação, que é a base fundamental da programação de computadores.

Linguagens de programação vêm e vão com frequência, mas a lógica de programação permanece. Uma vez aprendida, será possível aplicar os mesmos princípios a outra linguagem de programação.

Se quer sugestões de linguagem para começar, seguem algumas com características que podem ser atrativas ou não pra você:

  • Javascript: linguagem para desenvolvimento web tipicamente interpretada e muito acessível. É essencial no desenvolvimento de websites interativos juntamente com HTML e CSS (que são linguagens de marcação, e não de programação, diga-se de passagem). Apenas um editor de textos e um navegador são necessários para começar a experimentar a linguagem já que a maioria dos navegadores modernos (Firefox, Chrome, Opera, Safari etc) são capazes de executar códigos em javascript. A linguagem é predominante no desenvolvimento web e é obrigatória quando o assunto é desenvolvimento front-end. Pra quem quer desenvolver websites interativos não tem como errar escolhendo javascript juntamente com HTML e CSS. Apesar do nome, javascript não tem NADA a ver com java, são linguagens com propósitos completamente diferentes.

  • Python: linguagem tipicamente interpretada que prioriza a legibilidade e a elegância do código, portanto boa para começar a programar. Seu uso explodiu em popularidade nos últimos anos e é muito usada como linguagem de script para automação de tarefas, desenvolvimento de inteligências artificiais, ciência de dados, e outros. O próprio website do python disponibiliza a documentações, guias e o download do principal interpretador da linguagem (chamado de CPython).

  • C: linguagem tipicamente compilada, bem estabelecida e muito poderosa nas mãos de programadores experientes. Permite a manipulação direta do hardware do computador e o desenvolvimento de programas compactos e rápidos. É geralmente usada para fazer programas que exigem alta velocidade de execução e baixo consumo de recursos computacionais. Aprender C, no entanto, leva mais tempo porque ela não esconde do programador alguns detalhes que são tipicamente abstraídos em outras linguagens. Várias tarefas que são feitas automaticamente em outras linguagens, como o gerenciamento de memória por exemplo, devem ser feitas manualmente em C e exigem mais conhecimento acerca da parte física do computador (hardware). Sistemas operacionais e sistemas embarcados são feitos com frequência usando C, e projetos importantes do mundo da tecnologia (incluindo CPython, o principal interpretador da linguagem Python) foram desenvolvidos usando C.

  • C++: chamada de C plus plus (em inglês) ou C mais mais, é uma linguagem tipicamente compilada que possui características semelhantes ao C. Começou como uma versão extendida da linguagem C e era chamada de C com classes por possuir suporte para a programação orientada a objetos, mas acabou se tornando uma linguagem completamente diferente por causa da grande quantidade de recursos que a linguagem foi ganhando com o tempo. Assim como C, a linguagem C++ não esconde a complexidade computacional que é abstraida por outras linguagens e permite o desenvolvimento de programas compactos e rápidos. Muito usada para o desenvolvimento de softwares desktop como editores de imagem/som/vídeo, reprodutores de mídia, processadores de texto, jogos, sistemas operacionais e outros programas que exigem alta performance.

  • PHP: linguagem tipicamente interpretada criada objetivamente para desenvolver aplicações web no lado do servidor. A linguagem PHP é referência quando o assunto é back-end e é uma das linguagens mais usadas para esse propósito. Diversos sites de comércio eletrônico e portais de notícias são feitos com essa linguagem.

  • Java: linguagem cuja principal proposta é ilustrada pelo slogan inicial da linguagem: "write once, run everywhere" ("escreva uma vez, execute em qualquer lugar"). Como a linguagem é tipicamente compilada e depois interpretada por uma máquina virtual, é possível escrever programas que rodam em mais de uma sistema operacional diferente e possuem performance de execução intermediária entre programas puramente compilados e puramente interpretados. É a principal linguagem utilizada no desenvolvimento de aplicativos Android e software corporativo. Por ser uma linguagem intensamente fundamentada no paradigma POO (Programação Orientada a Objetos), a linguagem pode ser burocrática e trabalhosa de se aprender no início pois, além de aprender a lógica de programação, o programador terá que aprender conceitos de POO e lidar com sua verbosidade ao mesmo tempo que aprende a lógica de programação.

  • Pascal: linguagem tipicamente compilada, criada justamente para facilitar o ensino de programação. A linguagem preza por legibilidade e estrutura, e apesar de não ser tão popular como já foi no passado, continua a ser muito capaz e é usada por várias empresas e instituições, principalmente através de sua implementação mais famosa: o Delphi. Uma boa implementação da linguagem para começar é o compilador FreePascal, capaz de compilar programas rapidamente e gerar programas compactos e rápidos, e juntamente com o ambiente Lazarus de torna capaz de criar programas desktop com interfaces gráficas de maneira fácil e rápida.

A melhor linguagem para começar depende inteiramente do estudante, do caminho que ele tem em mente, e da carga cognitiva que ele está disposto a aguentar. Linguagens como C, C++ e Java, por exemplo, podem causar uma sobrecarga cognitiva no aluno por exigir a aprendizagem de mais detalhes ao mesmo tempo, tornando o processo mais enfadonho, mas ao mesmo tempo oferecem uma abordagem sólida de aprendizado por introduzir o estudante a assuntos que ele inevitavelmente terá que aprender ao longo do tempo. Já linguagens como Python produzem uma carga cognitiva significativamente menor e fazem o aluno focar no que é mais importante no início, que é a lógica de programação.

Qual a melhor linguagem de programação? Existe uma linguagem suprema, a melhor de todas, capaz de resolver todos os problemas?

Raciocine comigo: se você tiver que fixar um prego na parede a melhor ferramenta nesse caso será um martelo, certo? Você pode até conseguir fazer isso usando uma panela, uma chave de fenda, uma pedra, ou até uma faca, mas o martelo será a ferramenta que mais facilitará o trabalho.

Da mesma forma, cada linguagem de programação é melhor pra resolver um tipo diferente de problema. Não é incomum achar programas que são feitos com mais de uma linguagem de programação, já que certos projetos apresentam mais problemas do que uma única linguagem é capaz de resolver eficientemente.

É normal sentirmos mais afinidade por algumas linguagens do que por outras, mas em projetos profissionais a prioridade deve ser sempre a escolha adequada da ferramenta com a qual vamos trabalhar.

Cada categoria de problema exige ferramentas diferentes, e com o tempo você vai aprender a aplicar a solução mais adequada a cada caso.

Ainda não sei bem qual linguagem escolher para começar, e agora?

Se ainda está indeciso, se pergunte: quais problemas eu gostaria de resolver usando computadores? O que mais me deixa curioso e/ou fascinado na área de software? Jogos? Software para negócios? Ciência de dados? Robótica? Sistemas embarcados? Websites e aplicações web? Aplicativos móveis?

Depois de responder essas perguntas, verifique qual linguagem se encaixa melhor no que você quer fazer.

Mas eu quero começar da melhor maneira possível...deve haver a melhor forma, a forma PERFEITA!

Más notícias: não há nenhuma forma perfeita, você terá que fazer uma escolha e colher seus doces e amargos frutos ao longo do caminho. Muito raramente uma escolha trás apenas resultados agradáveis, na maioria das vezes elas vêm acompanhadas de situações desconfortáveis e cabe a nós ter paciência para aprender a lidar com elas. Pra fazer boas escolhas é necessário experiência, e a experiência vêm principalmente de más escolhas e erros que cometemos. Aprender é errar.

Simplesmente escolha uma linguagem e comece a trabalhar com ela.

Python é uma escolha interessante por causa de sua acessibilidade: com apenas o interpretador do python e um editor de textos simples já é possível experienciar a sensação de escrever um programa, aprender lógica de programação, e automatizar tarefas rapidamente no seu computador.

Continuo indeciso :(

Siga o conselho do gato Cheshire, personagem de Alice no País das Maravilhas: "Para quem não sabe para onde vai, qualquer caminho serve".

Na psicologia existe um conceito chamado de paradoxo da escolha, que foi popularizado pelo psicólogo e escritor Barry Schwartz. A ideia é a seguinte: quanto mais opções temos à nossa disposição, mais ansiosos e presos ao processo de escolha ficamos. Ter mais escolhas é bom, e é natural desejar fazer as escolhas que nos tragam a maior quantidade de benefícios possíveis e nos afaste da dor, mas essa paralisia pela análise nos faz perder um tempo precioso que poderíamos usar para efetivamente usufruir das escolhas que fazemos.

Independente de sua escolha agora, é possível fazer outras depois, e suas habilidades com lógica de programação poderão ser usadas com outras linguagens de programação. Aprender uma linguagem de programação facilita a aprendizagem de outras por que o princípio básico de funcionamento de todas elas está na lógica.

Me indica um editor de texto :)

Em teoria, qualquer editor (até o notepad do Windows) serviria para começar, mas bons editores de texto para programação fornecem, no mínimo, dois recursos para facilitar a vida do programador: o realce de sintaxe e a indentação automática.

  • Realce de sintaxe (ou syntax highlight): o editor preenche trechos de um código-fonte com cores distintas para destacar partes com funções diferentes, isso facilita a visualização da estrutura do código.

  • Indentação automática: as indentações são aqueles recuos (ou "espaços em branco") que existem no começo de algumas linhas de código, e fazem parte das boas práticas de programação. A indentação realça a hierarquia do código e facilita tanto a visualização quanto o entendimento do funcionamento de cada trecho de código do programa.

Exemplo de código sem realce de sintaxe e sem indentação:

# Função em Python (versão 3.7.3) para identificar números pares.
  
def num_par(num):
if num % 2 == 0:
print(num, "é um número par.")
else:
print(num, "é um número ímpar!")

num_par(2)

Exemplo de código com realce de sintaxe e indentação:

# Função em Python (versão 3.7.3) para identificar números pares.
  
def num_par(num):
  if num % 2 == 0:
    print(num, "é um número par.")
  else:
    print(num, "é um número ímpar!")

num_par(2)

Um editor que eu gosto é o Geany, um programa simples e leve que roda nos principais sistemas operacionais (Windows, Linux e macOS), reconhece automaticamente uma grande variedade de linguagens de programação e possui as funcionalidades básicas de um bom editor. Ele é gratuito, livre, e pode ser baixado neste link.

Obs: o código sem indentação apresentado no exemplo anterior não vai funcionar caso alguém tente executá-lo no interpretador. Diferente de outras linguagens como o C e o C++, a indentação é obrigatória na linguagem Python.

E qual o melhor editor de texto?

Sério mesmo? Depois de tudo que a gente já conversou?!

Por onde começar a aprender programação?

Existe uma quantidade enorme de material por aí, portanto listo abaixo alguns lugares por onde eu passei na minha jornada de programador e que podem te ajudar também. Obviamente, você não precisa fazer o mesmo percurso que eu fiz, portanto basta selecionar um deles e explorar. Se lembre que no começo o mais importante é sempre aprender bem a lógica de programação.

freeCodeCamp: o freeCodeCamp é um site em inglês voltado para o ensino de programação através de tecnologias web e solução de problemas de maneira interativa, onde você escreve e testa o código na própria plataforma. Ele começa com linguagens de marcação para fazer websites, como HTML e CSS, ensina programação em javascript (incluindo conceitos como algoritmos e estrutura de dados), e outros assuntos como computação científica e análise de dados com Python. O conteúdo do site é completamente gratuito mas aceita doações, caso possa doar sua contribuição será muito bem vinda.

Canal Ignorância Zero: o Ignorância Zero é um canal no youtube completamente em português que ensina programação em python com um acervo respeitável de videoaulas que abordam desde os tópicos básicos de programação até os avançados.

Canal Curso em Vídeo: outro canal do youtube com um acervo impressionante de videoaulas de programação completamente em português. O canal possui videoaulas de PHP, Javascript, HTML/CSS, Wordpress, Python, Java, lógica de programação com VisualG, Linux, Github e vários outros assuntos.

Green Tea Press: o Green Tea Press é uma editora eletrônica de e-books livres, ou seja, livros de programação que podem ser copiados, modificados e redistribuídos gratuitamente graças ao modo como foram licenciados (creative commons). O site disponibiliza o download gratuito desses livros em PDF e conta com um em especial chamado Think Python: How To Think Like a Computer Scientist (Pense Python: Como Pensar Como um Cientista da Computação). Esse livro não se limita a ensinar apenas a lógica de programação como também conceitos relevantes de ciência da computação. Todos os livros do site estão em inglês, possuem versões físicas disponíveis para compra e, é claro, o site aceita doações que serão muito bem vindas caso você possa contribuir. Como os livros estão sob a licença Creative Commons, é possível encontrar na internet versões deles traduzidas para outros idiomas (incluindo para o português).

Automate the Boring Stuff: o Automate the Boring Stuff with Python (Automatize Tarefas Chatas com Python) é um livro online, escrito em inglês, com uma visão pragmática do ensino de programação. Além de abordar o básico de programação, o livro ensina o aspirante a programador a usar a linguagem Python para resolver problemas práticos como a manipulação de arquivos de texto, imagens, planilhas, envio automático de emails e webscraping. O foco do livro é o desenvolvimento de programas para automatizar tarefas comuns e dar soluções rápidas a problemas, colocando um pouco de lado as boas práticas de programação. O site também disponibiliza versóes físicas para venda não só do Automate Boring Stuff como de outros livros igualmente interessantes.

W3schools: o W3Schools possui tutoriais interativos e cursos (tanto pagos quanto gratuitos) em inglês. O W3Schools não apenas ensina programação a partir do básico como possui um grande acervo de tutoriais para mostrar na prática como construir funcionalidades comuns na internet com eles, sendo que todos podem ser testados interativamente no próprio site. Eu uso os tutoriais desse site com frequência pra aprender a construir componentes de websites e para relembrar como usar certos comandos das linguagens.

Últimas considerações

  • Saber inglês é imperativo: como você deve ter observado no último tópico, boa parte do material sobre programação está em inglês. Documentações, livros, tutoriais e cursos são produzidos em inglês antes de serem traduzidos para qualquer outro idioma. O inglês é o idioma oficial da informática, portanto saber pelo menos ler e interpretar textos em inglês é obrigatório para quem quer se envolver profundamente com programação de computadores.

  • Boa parte do tempo do programador é usado com depuração: depuração, ou debugging, é o processo de localizar e corrigir erros em programas. Bugs são inevitáveis, programas dificilmente funcionarão de primeira, e é normal passar boa parte do tempo de desenvolvimento de um programa no processo de depuração.

  • Não é estritamente necessário saber matemática além do básico: a não ser em situações onde o problema exige conhecimentos específicos de matemática (ciência, economia, estatística, engenharia etc), a programação não exige mais do que aritmética básica. No entando, em decorrência de sua natureza lógica e da quantidade de problemas cujas soluções podem ser otimizadas matematicamente, a matemática ajuda muito o programador a resolver problemas complexos de maneira mais eficiente e coloca mais poder na mão dele.

  • Cuidado com o purgatório dos tutoriais: quando se aprende a lógica de programação o iniciante tende a ficar preso em tutoriais de internet por não saber o que fazer em seguida. Seguir tutoriais não é ruim, mas a competência principal de um programador é resolver problemas, portanto procure resolver problemas com o que vocẽ tem em mãos (ainda que sejam problemas pequenos) e explore a linguagem. Parte das grandes ferramentas digitais resultaram da experimentação e da solução de pequenos problemas pessoais que foram compartilhadas com outras pessoas.

  • Quebre problemas em partes menores: quando quebramos um problema em partes menores podemos resolvê-lo com muito mais facilidade, pois cada parte menor (ou sub-problema) terá um grau de complexidade menor do que o problema inteiro. Resolver problemas de programação consiste basicamente quebrar um problema em partes menores até que a solução de cada uma dessas partes seja facilmente expressada em códigos.

  • Frequência é melhor do que quantidade: se disciplinar a praticar todos os dias, mesmo que apenas um pouco, é essencial para uma boa fixação do conhecimento na mente. Boa parte da minha dificuldade de aprender programação aconteceu justamente pela falta dessa frenquência, e eu poderia ter avançado muito mais se não fosse pela minha indisciplina.

  • Não promova guerras de linguagens e tecnologias: é comum algumas pessoas incentivarem disputas e brigas por causa de linguagens de programação na internet. Seja por realmente acreditar na superioridade de algumas delas ou só pra se divertir às custas dos outros, essas brigas são completamente sem sentido uma vez que linguagens são apenas ferramentas e cada linguagem é boa pra resolver uma categoria específica de problemas. É válido criticar o uso inadequado de uma tecnologia ou linguagem, mas desnecessário promover atrito entre elas.

  • O que importa é saber o que importa: com uma quantidade tão grande e descentralizada de dados na internet fica fácil se afogar nesse mar de informação, portanto uma boa curadoria de conteúdo é essencial. Sempre que navegar na internet para procurar informações técnicas tenha foco e se pergunte: "essa informação é REALMENTE importante pra mim no momento? Ela vem de uma fonte confiável?".

  • Não tente aprender tudo de uma vez nem queime estapas: essa afirmação serve pra qualquer processo de aprendizagem, e com programação não é diferente. Se não entender algo, volte e tente entender novamente, consulte outras fontes de informação sobre o mesmo tópico, pergunte a alguém que domine esse assunto e, acima de tudo, coloque em prática.

  • Não se limite apenas ao básico: Apesar do básico ser muito importante na aprendizagem de qualquer assunto, se manter no básico é se limitar. A programação de computadores é uma atividade abrangente, fascinante e complexa, sempre com muita coisa a se aprender. Não se limite apenas a lógica de programação, vá além e aprenda sobre algoritmos, estrutura de dados, arquitetura de software, redes e outros assuntos que podem te ajudar a desenvolver programas mais eficientes, robustos e interessantes.

  • Aprenda a manter o código limpo: Manter o código limpo, legível e bem documentado é essencial para se trabalhar em equipe. Se lembre que boa parte dos programadores trabalha mantendo e melhorando programas feitos por outros, portanto manter o código limpo ajuda o próximo programador que botar as mãos em seu código a entender o que você fez e a corrigir problemas mais rapidamente. Como diz um conhecido meu: "Sempre considere que o próximo programador que vai dar manutenção no seu código é um sociopata violento que sabe onde você mora."

  • Seja construtivo e haja com ética: saber programar e manipular computadores é uma habilidade poderosa e exige muita responsabilidade, portanto haja com ética e seja sempre fator de soma na vida das pessoas. A ética sempre ocupou menos espaço do que deveria em discussões sobre computação, e num mundo que está sendo moldado por computadores você pode e DEVE fazer uma diferença positiva cultivando valores éticos elevados e agindo pra ajudar os outros ao invés de prejudicar.

Notas

  • Linguagem é diferente de implementação: do ponto de vista estritamente técnico, não existem nem linguagens interpretadas nem linguagens compiladas, por isso usei os termos "linguagem tipicamente compilada" e "linguagem tipicamente interpretada" no artigo. A criação de uma linguagem de programação e suas especificações é diferente da sua implementação (criação de compiladores, interpretadores, máquinas virtuais etc), e uma mesma linguagem de programação pode ter várias implementações diferentes. É possível, por exemplo, desenvolver um compilador e um interpretador separadamente para uma mesma linguagem de programação. Como a maior parte das linguagens possui uma implementação que costuma ser a mais usada e difundida, algumas pessoas se referem a essas linguagens como "linguagem compilada" ou "linguagem interpretada" se baseando nessas implementações.

  • Algumas implementações podem interpretar programas compilados: o cenário do desenvolvimento de software se sofisticou bastante nas últimas décadas, e algumas linguagens de programação podem ter implementações que permitem a compilação do código-fonte e, logo após, a interpretação do programa compilado. As principais implementações de algumas linguagens como Java e C# pertencem a essa categoria, onde o código-fonte é convertido num tipo de código de máquina que por sua vez será interpretado por uma máquina virtual. Esse processo pode garantir uma combinação de portabilidade (o programa pode ser executado em qualquer computador onde a máquina virtual esteja presente), velocidade de execução intermediária entre implementações puramente compiladas e puramente interpretadas, e uma otimização razoável de memória e processamento. Não me aprofundei muito nesse assunto aqui pra não complicar ainda mais uma temática já complexa.

Este artigo está licenciado sob a Creative Commons(CC BY-SA) e pode ser redistribuído, adaptado, remixado e usado para qualquer finalidade, inclusive a comercial, desde que os créditos sejam atribuídos a esse website e o trabalho resultante esteja sob a mesma licença deste artigo.