Código-fonte (source code em inglês) é o conjunto de palavras ou símbolos escritos de forma ordenada, contendo instruções em uma das linguagens de programação existentes, de maneira lógica. Existem linguagens que são compiladas e as que são interpretadas. As linguagens compiladas, após ser compilado o código-fonte, transformam-se em software, ou seja, programas executáveis. Este conjunto de palavras que formam linhas de comandos deverá estar dentro da padronização da linguagem escolhida, obedecendo critérios de execução. Atualmente, com a diversificação de linguagens, o código pode ser escrito de forma totalmente modular, podendo um mesmo conjunto de códigos ser compartilhado por diversos programas e, até mesmo, linguagens.
Definições
O Projeto de Informação do Linux define código-fonte como:
O código-fonte (também chamado de fonte ou código) é uma versão do software da forma em que ele foi originalmente escrito (digitado em um computador) por um humano em texto puro (caracteres alfanuméricos humanamente legíveis).[1]
A noção de código-fonte também pode ser aplicada de maneira mais abrangente, incluindo linguagem de máquina e notações em linguagens gráficas, nenhuma delas são textuais por natureza. Um exemplo desta definição extraído de um artigo publicado na conferência anual IEEE e na Source Code Analysis and Manipulation.[2]
Com o propósito de ser claro, o termo código-fonte é usado significando qualquer definição completamente executável de um sistema de software. Desta forma ele inclui código de máquina, linguagens de alto nível e representações gráficas executáveis de sistemas.[3]
Frequentemente são necessárias algumas etapas de tradução ou minificação entre o código-fonte original digitado por um humano e o programa executável. Enquanto algumas entidades como a FSF argumentam que um arquivo intermediário “não é um código-fonte real e não conta como código-fonte”,[4] outras acham conveniente tratar cada arquivo intermediário como código-fonte para a próxima etapa.
História
Os primeiros programas feitos para computadores capazes de armazená-los eram passados para a máquina em código binário através dos interruptores presentes no painel frontal do computador. Esta linguagem de programação de primeira geração não tinha distinção entre código-fonte e código de máquina.
Quando a empresa IBM começou a fornecer softwares que funcionavam em conjunto com suas máquinas, o código-fonte era provido sem qualquer custo adicional. Na época, o custo de manutenção e suporte do software estava embutido no preço do hardware. Por décadas, a IBM distribuiu o código-fonte juntamente suas licenças de uso de software, até o ano de 1983.[5]
A maioria das primeiras revistas sobre informática publicavam códigos-fonte impressos para que os leitores os digitassem em seus computadores para executá-los. Ocasionalmente o código-fonte completo de um programa extenso é publicado em forma de livro impresso.