Quarta, 22 Fevereiro 2012

Códigos Abertos

Escrito por George Gomes on Domingo, 13 Novembro 2011 21:04

Se um software vai preparar e enviar uma declaração fiscal em meu nome, declaração pela qual responderei eu perante a Lei, quero ter o direito de saber, por meios ao meu alcance e de minha escolha, como esse software operaria em meu nome. Mesmo que não tenha meios de saber pessoalmente, tenho o direito, constitucional e moral, de julgar insuficiente a palavra apenas de quem me oferece o software.”

Por que abrir o código do software de declaração de IRPF?
Pedro Antônio Dourado de Rezende

A matéria-prima do mundo virtual que habitamos cotidianamente são os códigos. Nada além de símbolos articulados segundo regras bem definidas. Diferente de casas e prédios, que precisam de muitos recursos naturais para serem erguidos, as gigantescas construções digitais são levantadas sobre códigos pensados, convencionados, organizados e registrados em microchips, discos magnéticos, ópticos etc. Toda essa estrutura, aparentemente sensível, mantem sob sua responsabilidade boa parte de nossas ações e relações cotidianas. Mas quem são os responsáveis por todos estes códigos? O que precisamos saber para garantirmos um mínimo de controle de nossa vida digital? Estas perguntas nos levam a desenvolver algumas reflexões sobre os softwares de código aberto, ou softwares livres, muito importantes para a constituição de nossa cidadania digital.


Código e Linguagem

 

if (senha != “”) { verificaSenha(senha);  } else { avisoSenha(); }

A palavra código insinua que esses registros não possuem um significado óbvio, direto, mas que escondem o seu significado. No entanto, a intenção inicial não era camuflar o que há por trás dos programas, mas simplesmente traduzir os procedimentos e recursos para um nível mas puro: o da informação (daí deriva a palavra informática). Eles também devem ser puros em outro sentido, o da lógica, pois na medida em que as instruções passadas por eles vão subsidiar as decisões das máquinas, eles não podem possuir erros, contradições, ambiguidades etc. Desta forma, tudo aquilo que um sistema computadorizado precisa fazer e aquilo que ele deve manipular, é transformado em código, uma descrição simbólica mais simples, lógica e rápida de ser registrada e comunicada (código-fonte).

Se a variável “senha” não estiver vazia, então execute a função “verificaSenha()” tendo a variável “senha” como parâmetro. Senão execute a função “avisoSenha()”.

Como os códigos são frutos de convenções humanas, ou seja, de regras que determinam sua organização, coesão e tratamento, concluímos que eles fazem parte de algo maior, ao qual chamamos linguagem. Uma linguagem é o conjunto de normas de entendimento que orientam a criação, manutenção e funcionalidade dos códigos, permitindo a interpretação correta deles e a continuidade de sua aprendizagem Os códigos só possuem sentido se fazem parte de uma linguagem. Existem muitas formas de organizar e utilizar os mesmos códigos e por essa razão existem inúmeras linguagens. Mas é consenso entre os programadores de que não existe uma linguagem perfeita, apenas adequadas para determinados contextos.

Código Aberto

Dizer que um código é aberto significa dizer também que existem códigos fechados. Um código é fechado quando não podemos ter acesso a ele. No processo de criação da maioria dos softwares existe uma etapa em que perdemos, por limitações humanas, a capacidade de entender o que está acontecendo. Esta etapa, chamada de compilação, o código é traduzido para ser entendido pelas máquinas, ou seja, em código binário. Dizemos que um programa é de código fechado quando não temos mais acesso a seu código-fonte (source code), mas apenas ao código executável.

Um programa de código aberto, por sua vez, deve permitir que o código-fonte esteja sempre à disposição de seus usuários. Para isso, no entanto, não é necessário modificar nada no programa, apenas tomar a decisão de disponibilizar os arquivos do código-fonte junto aos arquivos executáveis. Isso quer dizer que a metodologia de programação continua, necessariamente, a mesma, o que muda é a decisão do programador de guardar apenas para si, ou colaborar com a criatividade e o trabalho de outras pessoas.

Abrindo a fórceps

Mesmo depois de compilado, ainda é possível descobrir como o software foi feito, no entanto, o processo é muito mais difícil e chamado de engenharia reversa. Por ele, tenta-se reconstituir o ato de construção do software a partir de seus efeitos, de sua execução. O curioso caso da Fundação Software Livre - América Latina, que conseguiu construir seu próprio software de declaração do imposto de renda brasileiro, serve de exemplo. Outro exemplo foi a criação do primeiro processador da AMD, uma cópia perfeita do Intel 8080. Os romanos não tiveram tanto trabalho para copiar os navios cartagineses, tendo em vista que os próprios navios possuem os códigos usados em sua construção, ou seja, eram seus próprios manuais. A engenharia é muito utilizada, atualmente, na criação de drivers para novos e antigos dispositivos de hardware.

Protegendo a abertura


Nas duas últimas décadas o movimento software livre tem se fortalecido bastante, e uma de suas lutas é pela defesa de que os códigos dos programas possam ser compartilhados abertamente. Tomando como referência a forma como surgiram os principais softwares na década de 1970, o movimento acredita que compartilhá-los é modo mais fácil e rápido de fazê-los evoluir junto com a sociedade. Uma das maneiras de garantir a continuidade deste processo foi a criação, em 1989, da licença GPL, pela qual os softwares, a partir de então, poderiam ser registrados permitindo o livre compartilhamento, mas, principalmente, impedindo que eles se tornassem propriedade exclusiva de alguém ou empresa. Inicava-se assim um movimento batizado de Copyleft, ou, “deixe copiar”, uma inversão do famoso Copyright.

Outros aspectos envolvidos

Além dos muitos conhecidos aspectos do movimento software livre atualmente, existem alguns que não são tão divulgados assim, mas que também compõem o universo opens source. Um deles se refere ao que se chama documentação. Ela serve para garantir que a construção ou modificação do software vai seguir as orientações de seu criador, que se leve em consideração o contexto em que ele foi produzido inicialmente, bem como seus alertas, possíveis limitações etc. Além da documentação os códigos também devem possuir comentários explicativos, serem bem organizados e objetivos. Tudo isso faz com que se melhore o aprendizado de quem o utilizará em novos desenvolvimentos.

Código Aberto e Sociedade


Tal como se compartilham receitas de bolos, nossos professores ensinam as fórmulas utilizá-das nos cálculos de física ou química. Nossa sociedade se desenvolve sobre o compartilhamento de informações, o que no mundo tecnológico não seria diferente. Mesmo que não utilize estas informações diretamente para o controle ou desenvolvimento de software, o cidadão deve reivindicar esta liberdade na medida em que pode influenciar seu direto de escolha ou necessite dele para se proteger.

Mais software livre

Twitter
 

Administração

Interação

Professorvirtual.org

Professorvirtual.org é um espaço de compartilhamento de ideias sobre educação e tecnologia livres. Compartilhe suas ideias conosco clicando aqui.