quarta-feira, 3 de dezembro de 2008

Programação para Imprevisibilidade. Imprevisibilidade na Complexidade.

Sistemas de software convencionais oferecem a seus usuários ferramentas cujo resultado é previsível, ainda que com o conjunto desses resultados se possam gerar composições complexas. É o caso do editor de imagem tradicional, que permite a inclusão na tela de formas pré-definidas, curvas, além do preenchimento destas com cores e texturas; um software como esse pode ser usado para o projeto de um jornal, de um cartaz, ou mesmo para o esboço de um edifício. O software oferece uma linguagem para seus usuários, que são justamente suas ferramentas e padrões, e o usuário conhecedor dessa linguagem pode usá-la para modelar o que deseja. Nas diferenças entre o modelo idealizado pelo usuário e o resultado final reside a interferência do software, que pode ser limitadora, por exemplo quando ele não oferece as ferramentas necessárias ao modelamento de certa forma idealizada, ou pode haver uma influência criativa, ou ao acaso, quando o resultado de uma ação não prevista pela sintaxe do software gera um bom resultado formal.

Tendo em vista o funcionamento de tais sistemas de software, com sua linguagem clara e de resultados precisos quando acionados pelos usuários, nota-se que ele é pouco dialético, e principalmente pouco dialógico. Há, no entanto, na Ciência da Computação, exemplos de software em que atinge-se dialógica, nos quais a léxica deixa de ser um conjunto de ferramentas de resultados precisos e o diálogo passa a ser entre as intenções formais, ou mesmo funcionais e sentimentais do usuário e a resposta adequada do software, que pode Desenvolvemos então um software que reage aos movimentos dos usuários, ainda que levados ao computador pelo movimento de um cursor do mouse. A cada movimento, um conjunto de linhas conexas é apresntado; o resultado são formas que se compõem gradativamente, de modo diferente a cada nova interação.

O funcionamento do software tem 7 comportamentos diferentes, que podem ser escolhidos pelos usuários ao digitarem as letras “a” a “f”, ou qualquer outro dígito que resultara no mesmo comportamento. Ainda que esse detalhe seja meramente operacional, iniciamos a seleção do comportamento que o programa adotará pedindo ao usuário que escolha a sua complexidade.

Os resultados obtidos podem ser os seguintes:

- Opção A: novas retas são adicionadas, limitando-se à forma de um quadrado. O que acontece nesse caso é o preenchimento gradativo do quadrado com retas conectadas. O ponto inicial de cada reta é o final da anteriormente inserida no sistema. Mais de uma reta é inserida a cada movimento do mouse (o que pode ser definido no código fonte do sistema). Como as retas tem seus pontos definidos aleatóriamente, o padrão de preenchimento do quadrado deve ser diferente a cada interação.

- Opção B: as retas resultantes da execução do software nesse modo não tem limitação vertical, ainda que sejam limitadas horizontalmente. Elas são adicionadas às pré-existentes seguindo a direção do movimento do mouse. Quanto mais veloz o movimento, mais espaçadas serão as retas, como acontece com um pincel real, que preenche mais a tela com a cor da tinta que carrega quanto mais lento for o movimento do pintor.

- Opção C: semelhante ao caso A. Nesse caso as retas limitam-se a um retângulo que se apresenta no topo da tela.

- Opção D: semelhante ao anterior. A limitação espacial é o quadrante superior esquerdo da tela

- Opção E: Nesse caso as retas ocupam todo o espaço da tela, exceto as bordas direita e esquerda.

- Opção F: A limitação espacial é semelhante à da opção E, com a diferença de que a função que gera os pontos aleatóriamente é alterada a cada movimento do mouse. Assim, mesmo que iniciassem a execução do software ao mesmo tempo e em dois computadores diferentes e executassem simultaneamente os mesmos movimentos, dois usuários veriam a imagem se formar diferentemente se um escolhesse a opção E e o outro a opção F.

- Qualquer outra opção: o traçado corresponderá ao movimento exato do mouse quando ele for movimentado lentamente e a retas compostas por pontos por onde ele passou quando movimentado rapidamente. A velocidade do movimento e sua captação na imagem pode ser controlada no código fonte desse software.

É comum a todas essas opções o comportamento de que todas as retas traçadas tenham uma nova cor a cada movimento do mouse. Quando quiser apagar totalmente o quadro, o usuário pode clicar.

Quando comparado a um sistema tradicional de edição de imagem, como o descrito inicialmente, a diferença desse software está na aleatoriedade da forma gerada. O resultado visual desse diálogo pode agradar seu usuário, ainda que não seja totalmente previsível.Considerando que designer aplicam diversos itens soltos para produzir uma colagem esteticamente aceitável, pode-se pensar nesse sistema como uma metáfora deste trabalho de composição. As retas, nesse caso, podem fazer o mesmo, ou seja, podem se compor de uma maneira admitida ou não pelo usuário. Cada reta pode representar um elemento de uma colagem, e pensando no usuário do software como o designer que produz essa colagem, pode-se entender que o computador funciona como o seu parceiro de produção, pois é ele quem define qual o próximo elemento que será inserido, e onde será inserido.

Ainda que essa composição de retas seja um modelo simplificado de uma colagem, ela se caracteriza por um diálogo entre o designer (ou usuário) e o computador. Este define os elementos e sua posição, e aquele a velocidade de inserção de elementos. Ainda que o computador pareça "liderar" o processo criativo, na realidade ele só traz sugestões daquilo que o usuário poderia idealizar, e cabe a este decidir se elas fazem sentido. De fato, a autonomia é do usuário, que decide se a "sugestão" dada pelo computador será aceita, se precisa de mais elementos, ou se deve ser totalmente apagada.

Não se pretende caracterizar esse sistema como complexo, pois mesmo as funções aleatórias dos computadores são definidas matematicamente. Não hã neste sistema uma composição de ciências, e mesmo a interação com os usuários é limitada à captação de seu movimento por um mouse. No entanto, não se pode dizer que o usuário definiu exatamente qual é gráfico final. A imprevisibilidade é parte dos sistemas complexos, e esse sistema se propõe a apresentar o imprevisível ao seu usuário.

O vídeo a seguir é uma simulação do uso desse software:

Nenhum comentário: