23/08/2010
Este é o terceiro de uma série de cinco artigos escritos por Alan Lazalde para o blog espanhol Bitelia, em que ele faz uma “revisão da história da internet e das ideias libertárias que a sustentam”. No primeiro artigo, ele fala sobre a Arpanet e a origem da internet. No segundo, sobre a criação da World Wide Web (WWW). Este é sobre os algoritmos de software. Veja a tradução livre abaixo:
Código-fonte: o idioma homem-máquina
Um algoritmo é um método que segue um número finito de passos para resolver um problema. Para que um computador execute um algoritmo, este deve ser apresentado a ele em um formato que lhe seja inteligível, normalmente em sequências de zeros e uns (bits), algo como uma linguagem de máquina.
As pessoas não falam linguagens de máquina. Então como dão conseguem dar comandos a um computador? Como se consegue que um dispositivo de computação execute um algoritmo que, em princípio, não é nada mais que uma ideia na cabeça de seu criador? Na prática, isso é possível pelo uso das chamadas linguagens de programação.
Uma linguagem de programação é um meio-termo entre a linguagem natural, falada pelas pessoas, e uma linguagem de máquina, os bits. Uma pessoa capaz de aprender alguma linguagem de programação pode especificar, seguindo uma sintaxe (conjunto de regras que determinam a ordem e as relações das palavras na frase) precisa, o algoritmo que deseja implementar em um computador.
A especificação de um algoritmo, descrita em certa linguagem de programação, é conhecida como código-fonte (armazenado diretamente em um arquivo de texto). A transformação desses códigos em uma linguagem de máquina acontece em passos coordenados por um software chamado compilador.
A transformação final ocorre com a criação de um arquivo pronto para ser executado pelo equipamento de computação. Esse arquivo é o programa de software. Assim, o compilador não é nada mais que um software que transforma códigos-fonte em uma versão executável de software.
O computador Eniac, o primeiro construído para ser usado em propósitos gerais — de acordo com a versão mais aceita de sua história –, ativado a partir de 1947, era programado por meio de cabos e interruptores. Neste sentido, pode-se dizer que os programadores precisavam saber muito bem como o Eniac funcionava para poder introduzir na máquina os algoritmos de seu interesse.
Hoje, os programadores precisam saber um número cada vez menor de detalhes sobre as máquinas nas quais vão implementar seus algoritmos. Em vez disso, se concentram cada vez mais nos problemas que pretendem resolver usando essas máquinas. É provável que, no futuro, a linguagem natural e as linguagens de máquinas se juntem por meio de um mesmo código-fonte.
Software e conhecimento
Bem, se os algoritmos são ideias que resolvem problemas concretos e sua implementação, para serem executados por um computador, está descrita em um código-fonte escrito em alguma linguagem de programação, a quem pertence essa obra intelectual que é um software?
E se o software é uma soma de ideias (os algoritmos) e sua implementação (o código-fonte), quem, se não o programador (ou alguém contratado por ele) é seu proprietário legítimo?
É uma prática comum que a propriedade de um software pertença legalmente a quem registrar esse direito em um escritório de patentes ou de direitos autorais. Nos Estados Unidos, é possível patentear algoritmos e sua implementação em software. (No Brasil, não existe patente de software, mas sim direito autoral). Isso estimula as empresas de desenvolvimento a basear seu modelo de negócios na proteção de seu software, a fim de mantê-lo em segredo e protegido de possíveis concorrentes.
As licenças de uso de software, por sua vez, costumam ser muito específicas. Sua finalidade é advertir o usuário final para as maneiras legais de uso do software em questão e alertá-lo para não recorrer a práticas contrárias ao interesse de seus proprietários.
Independente disso, há quem que acredite que patentes e licenças tradicionais de software são na verdade ferramentas que limitam a liberdade fundamental de ter acesso ao conhecimento. Uma dessas pessoas é Richard Stallman, que em 1983 assumiu a tarefa de iniciar um movimento técnico e ideológico — e também religioso, em certo sentido — que levou muitos a reconsiderar profundamente o tema da propriedade intelectual do software.
A luta de Stallman começou fundamentada nos velhos princípios com os quais ele, um hacker, cresceu: colaborar para compartilhar o conhecimento, usando uma língua franca chamada código-fonte.
A lógica por trás dos esforços de Stallman pode se resumir da seguinte maneira:
“As ideias são conhecimento e o conhecimento pertence a todos. Assim, se um software é um conjunto de ideias implementadas por meio de um código-fonte, um software é um repositório de conhecimento. Logo, todos somos donos do software.“