Este post se destina ao público leigo em tecnologia. A proposta é explicar, em linhas gerais, o que é um software e em que consiste o trabalho de um programador. Embora introdutório e atécnico, pretende-se expor o assunto sob uma perspectiva histórica, explicando, ao final, o que significa tornar livre um software.
Como dito, programar é a arte de resolver problemas. A resolução de alguns problemas, contudo, é que permite que sejam propostos outros novos.
Um dia, exibir caracteres em uma dela foi um problema que teve de ser enfrentado e resolvido, questão que hoje nem mais se coloca. Um dia, fazer com que uma impressora se comunicasse com um computador e imprimisse documentos também foi um problema. Não tão distante assim, exibir gráficos em um monitor era um problema, o modo de interação com as máquinas era exclusivamente no modo texto. Fazer com que computadores se comunicassem já foi um problema. Tornar a programação mais acessível e menos propensa aos erros já foi um problema.
A resolução destes e de muitos outros problemas é que abre nossos horizontes para pensar outros tantos. Neste sentido, tornar um software livre significa tornar disponível e acessível a sua forma de resolver tais e quais problemas, significa expor a solução à crítica, significa permitir a cooperação, significa também a transparência do que um software faz quando você o executa. Na prática, o primeiro passo para essa liberdade é divulgar os códigos, em vez de transmitir apenas os arquivos binários auto-executáveis. Mas não basta apenas divulgá-los, é necessário garantir que aquele saber poderá ser utilizado para quaisquer fins. Muitas são as implicações de uma escolha entre um modelo proprietário e um modelo livre e seria inviável ou pobre tentar discorrer sobre todas em um único post.
Cabe, entretanto, uma ilustração. Programação é ciência e também é arte. Há um mote que diz: "code is poetry". Por mais assombro que a idéia possa trazer ao humanista, há um ponto de convergência entre a poesia e a programação que se perfaz na dedicação à linguagem. Assim como uma idéia pode ser transmitida de diversas maneiras, mas o que distingue o poeta do falante é a forma como usa as palavras para colocá-la, um problema pode ser enfrentado de diversas formas e o que distingue o programador é a sutileza de sua solução.
Para aprender e entender poesia, os poetas lêem as obras de outros poetas, estudam seus poemas e rascunham os próprios. Não é uma arte que nasce pronta, mas que desenvolvem a partir das idéias que captam em outros autores e que moldam aos seus próprios anseios.
Os programadores, em um mundo de softwares proprietários, estão completamente abandonados em seu aprendizado. Para estudar programação dispõem apenas de manuais que explicam linguagens de programação, sintaxe e arquitetura de computadores. Nas faculdades de ciência da computação não se pode estudar as obras de grandes poetas, pois são secretas, pode-se somente estudar a cartilha.
Programação é arte e também é ciência. Hoje em dia ninguém mais precisa desenvolver o binômio de Newton, ninguém precisa fazer experimentos para inferir a relação entre a matéria e a energia (E=m.C²), ninguém precisa buscar encontrar uma relação entre os lados e ângulos de um triângulo. Este conjunto de conhecimentos já faz parte do estado da arte e os novos estudiosos podem a partir deles se debruçar sobre novos problemas ao mesmo tempo em que podem sobre eles se debruçar a fim de apontar-lhes as impropriedades.
Não é o que ocorre com a programação em um mundo de softwares proprietários. O conhecimento científico em matéria de software segue hoje um modelo empresarial fechado, onde grande parte do conhecimento encontra-se recluso nas mãos de poucos cujo interesse não é a crítica e o desenvolvimento, mas o controle e o poder.
O software livre, neste sentido, é uma mudança de paradigma ao mesmo tempo em que um retorno ao paradigma anterior. Falar em software livre significa negar o viés do produto acabado e encaixotado e abraçar o viés do conhecimento sempre mutante, sem fronteiras definidas, negar a centralização e a dependência e clamar empoderamento do indivíduo. Falar em software livre significa recursar a perpetuação de relações desiguais, negar a existência de uma distinção fundamental entre os que manipulam o saber e aqueles que dele apenas sentem os reflexos. Significa rejeitar uma visão polarizada de uma sociedade divida entre autores e leitores, desenvolvedores e usuários, produtores e consumidores, governantes e governados.
Todos os desenvolvedores de software são também usuários e todo usuário é em potencial um desenvolvedor. Pensar em termos de liberdade é reconhecer e enfatizar as potencialidades individuais, é convidar ao diálogo, é convidar à ação refletida, à transparência e à participação de cada um no diálogo cultural. Liberdade em software, conhecimento livre, é muito mais do que simplesmente não pagar pelo utilitário de processamento de textos para o seu trabalho escolar.
[2] Comentário enviado por removido em 25/07/2009 - 12:07h
Eu gostei!
"Neste sentido, tornar um software livre significa tornar disponível e acessível a sua forma de resolver tais e quais problemas, significa expor a solução à crítica, significa permitir a cooperação, significa também a transparência do que um software faz quando você o executa. Na prática, o primeiro passo para essa liberdade é divulgar os códigos, em vez de transmitir apenas os arquivos binários auto-executáveis. Mas não basta apenas divulgá-los, é necessário garantir que aquele saber poderá ser utilizado para quaisquer fins."
Para mim um dos pontos mais importantes do artigo. Tornar um software livre é abrir caminho para todos aqueles que se sentiam "trancados nos manuais". Dar uma enorme contribuição ao próprio software que poderá ser corrigido e melhorado por alguém que verá algo que o desenvolvedor original não viu, ou não conhecia.
Para quem estuda programação e muitas vezes vem à mente a ideia de:
printf("não aguento mais, isto é coisa de doido");
Um artigo como estes dá um ânimo a mais.
Gostei mesmo!
[3] Comentário enviado por d4n1 em 25/07/2009 - 13:49h
Sábias palavras cara:
"Programação é ciência e também é arte. Há um mote que diz: "code is poetry". Por mais assombro que a idéia possa trazer ao humanista, há um ponto de convergência entre a poesia e a programação que se perfaz na dedicação à linguagem. Assim como uma idéia pode ser transmitida de diversas maneiras, mas o que distingue o poeta do falante é a forma como usa as palavras para colocá-la, um problema pode ser enfrentado de diversas formas e o que distingue o programador é a sutileza de sua solução."
"Para aprender e entender poesia, os poetas lêem as obras de outros poetas, estudam seus poemas e rascunham os próprios. Não é uma arte que nasce pronta, mas que desenvolvem a partir das idéias que captam em outros autores e que moldam aos seus próprios anseios. "
Gostei bastante da idéia e abordagem do artigo, está de parabéns! E vamos apoiar, contribuir e diserminar o software livre!
[4] Comentário enviado por vinipsmaker em 26/07/2009 - 20:45h
Perfeito, agora quando eu estiver respondendo perguntas no Yahoo! Respostas não precisarei mais ficar tendo que escrever quase o mesmo texto (que se torna cansativo e chato após ter de se escrevê-lo várias vezes).
Valeu pelo texto. Um moderador deveria colocar seu artigo como artigo destaque e colocá-lo também na página: http://www.vivaolinux.com.br/linux/