Categorias

O que é Código Fonte?

Você que visita o Código Fonte todos os dias em busca de novidades e conhecimento sobre tecnologia da informação, desenvolvimento e programação, certamente já sabe a resposta para a pergunta. Talvez nunca tenha parado para pensar em cima da resposta ou avaliado todos os seus aspectos, mas saberia definir de forma simples o que é código fonte: é o conjunto de códigos escritos que fazem qualquer programa, sistema ou serviço funcionar, da web ao desktop, dos aplicativos de smartphone aos complexos algoritmos de Inteligência Artificial que um dia poderão governar esse mundo.

Não importa se foram escritas em Java, PHP, Swift, .NET, Kotlin ou Ruby: essas linhas que podem ser apenas um punhado ou se estenderem por milhões e milhões delas são a base, são a fonte de tudo que existe em informática. Incluindo essa página na internet. Incluindo esse navegador que você está utilizando para ler essa página. Incluindo esse sistema operacional que permite que esse navegador funcione. Tudo tem seu código fonte.

Essa fonte encapsula as instruções para que um programa funcione, incluindo aí suas variáveis, funções, iterações, exceções, coleta de erros e tudo necessário para que a lógica seja respeitada e a máquina execute aquilo que se pede.

Na prática, é texto, com sua própria sintaxe (assim como essas linhas em Português) e utiliza letras, números e caracteres especiais, exigindo ou não um editor especial. Você poderia utilizar até o Bloco de Notas para escrever um programa, mas a ferramenta certa poderá facilitar e muito essa tarefa. Existem ferramentas visuais que ajudam na formatação e criam o código fonte para você, existem ambientes inteiros de desenvolvimento que gerenciam versões e módulos, assim como utilitários que reforçam a sintaxe correta e as boas práticas da linguagem escolhida.

Código Fonte x Código Objeto x Código Executável

Alguns programas mais simples podem rodar diretamente a partir do código fonte, a partir de um motor que interprete esse script. É assim que acontece com o HTML dessa página, por exemplo ou mesmo o JavaScript embutido nela: o navegador interpreta o mesmo código fonte que qualquer um pode visualizar no arquivo. Programas ou serviços mais complexos exigem que esse código fonte seja compilado, ou seja, traduzido para uma linguagem diferente, que apenas máquinas são capazes de entender.

Então, Código Fonte é aquilo que a maioria de nós é capaz de ler e compreender. Mesmo quem não tem conhecimento algum de programação pode intuir algo ao abrir o código fonte de um programa, página da web, serviço. Não por acaso, essa foi a escolha do nome para o nosso site: Código Fonte, informação sobre tecnologia fácil de assimilar.

Quando o Código Fonte é compilado, ele se torna Código Objeto, um módulo de composição também chamado de código de máquina.

A união de todos os códigos objeto que compõem um projeto se torna o Código Executável, aquilo que será carregado em memória pelo sistema operacional e, como o próprio nome diz, será “executado”

Essa é uma visão bem simplificada do processo e muita gente costuma afirmar que Código Fonte e Código Objeto são o “antes” e o “depois” de programas de computador. Essa distinção, entretanto, não se aplica com linguagens de script, quando existe somente uma forma de código.

Fluxo do Código Fonte

Mas como se dá esse fluxo, de código fonte a código executável? Vamos pegar um exemplo simples, de um programa “Hello World” feito em C:

/* Fala galera */

#include<stdio.h>

main()
{
printf(“Fala galera”);

}

Mesmo que você morra de medo de C ou nunca tenha esbarrado em uma linguagem de programação na vida, é possível visualizar nas linhas acima que o objetivo do nosso programinha é exibir o texto “Fala Galera” na tela. Um pouco de inglês ajuda a entender também, uma vez que as principais linguagens de programação do mundo foram criadas a partir desse idioma.

Mas sabe quem não consegue entender de forma alguma o que foi escrito ali? O seu computador. Para que o sistema operacional compreenda que está recebendo instruções para algo tão simples, esse código fonte, legível para humanos mas incompreensível para máquinas, precisa ser convertido em código objeto. Quem faz essa “tradução” não é o programador, mas uma ferramenta chamada de compilador. Existem diferentes compiladores para diferentes linguagens e, em nosso exemplo, seria utilizado um compilador C.

O arquivo gerado pelo compilador passa a ser o nosso código objeto.

Código objeto é formado basicamente de números zero e um, é código binário e, definitivamente, não é algo prático de ser trabalhado por humanos. É um processo similar ao que acontece com URLs e números IP de internet, mas em um nível ainda mais complexo.

Esses códigos objeto podem ser interligados para criar um arquivo executável que irá, por fim, realizar a tarefa que pedimos para ser feita.

História do Código Fonte

Lembra quando dissemos que código objeto não foi feito para ser lido por humanos? Bem, o primeiro programa de computador foi escrito em binário na década de 40, então, você pode imaginar como os desenvolvedores da época matavam um leão por dia. Talvez seja por isso que na mesma década tenha sido criado aquele que é considerado por muitos como o primeiro código fonte da História.

Coube ao matemático e engenheiro britânico Tom Killburn ao lado do também engenheiro e também britânico Sir Frederic Calland Williams o mérito de terem criado o primeiro programa digital em maio de 1948. Era um programa desenvolvido para resolver uma equação matemática e podia ser armazenado em memória.

Nos anos 50 e 60 era comum que o código fonte fosse oferecido de graça junto com os programas comercializados para que os clientes os adaptassem as suas necessidades. Com a expansão da computação pessoal nas décadas seguintes e sua popularização, a distribuição de código fonte se expandiu. Quem viveu o começo dessa era no Brasil talvez se lembre das primeiras revistas dedicadas ao tema e tenha digitado, caractere por caractere, os códigos impressos para criação de programas.

Dos códigos impressos em folhas de papel, evoluímos para discos de armazenamento e hoje em dia o conhecimento é compartilhado através da internet, inclusive em sites como esse que você está visitando.

Licenciamento do Código Fonte

Outra distinção importante surgiu depois do sucesso comercial de programas: o tipo de licenciamento do código fonte. Se, nos primórdios, era comum a distribuição de um código aberto, atualmente o que prevalece é o modelo fechado, embora haja uma forte comunidade favorável ao código livre.

Por exemplo, quando o usuário instala a suíte de aplicativos do Microsoft Office no seu desktop, o código fonte segue pertencendo à Microsoft. O usuário não tem qualquer tipo de acesso ao código fonte, somente ao programa compilado e suas bibliotecas de componentes. No caso de serviços como o Office 365, o usuário não é nem mesmo dono dos programas, tem somente uma licença de uso, que pode expirar ou ser revogada. É o chamado Software As A Service (“Software como serviço”) ou SaaS.

Mantendo a comparação na linha de suítes de aplicativos de escritório, o LibreOffice não apenas pode ter seu programa executável baixado e utilizado como seu código fonte também está disponível na internet para o usuário baixar e modificar.

No caso de códigos fechados, é inclusive comum que as empresas proíbam terminantemente que seus usuários tenham acesso ao código fonte, vetando tentativas de descoberta ou quaisquer tipo de modificações. Essa postura não é fruto somente de interesses comerciais para preservar sua propriedade intelectual, mas também como uma medida de proteção contra alterações indesejadas ou equivocadas que possam resultar em um comportamento ilegal ou perigoso de seus programas, tornando-os vulneráveis a ataques ou intencionalmente maliciosos.

Em contrapartida, códigos abertos são criados do zero com a proposta de usufruir dos esforços colaborativos de uma comunidade de desenvolvedores. Não é uma postura a prova de falhas, mas problemas e vulnerabilidades podem ser detectados e corrigidos espontaneamente por um coletivo que costuma estar focada para esse objetivo.