Alan Turing, 98

Estadão

23 Junho 2010 | 09h03

Cá estava eu achando que não ia ter o que blogar hoje, e eis que encontro um tuíte da @CyberDecker (que mantém o blog CyberGi) lembrando que hoje é — ou seria — aniversário do matemático britânico Alan Turing. Se não tivesse sido levado ao suicídio pela política cruel de repressão ao homossexualismo que vigorava no Reino Unido na década de 50, ele poderia estar fazendo 98 anos.

Tratar de Turing num blog é quase desrespeitoso. Ele teve uma vida (e realizou uma obra) que requer volumes inteiros para ser bem apresentada; seu vulto simplesmente não cabe numa postagem de 500 palavras. Suas contribuições à ciência — a “Máquina de Turing”, o “Teste de Turing”, entre outras — têm uma enorme riqueza não só em termos de potencial tecnológico, mas também conceitual e filosófico.

Quer saber mais? A Wikipedia está aí para isso.

Mas vou mencionar aqui uma descoberta de Turing que recebe relativamente pouca atenção dos popularizadores, mas que me parece ter implicações monumentais. Estou me referindo ao “Halting Theorem”, ou Teorema da Parada.

Pense no WordPress, o programa que estou usando para blogar, e no texto desta postagem, o “input” que estou dando ao programa.

Assim que eu clicar em “publicar”, o programa vai começar a processar o input, e uma de duas coisas pode acontecer: o processamento terminar em algum momento — com a provável publicação do texto no blog ou, falhando isso, a emissão de algum tipo de mensagem de erro — ou o WordPress travar e ficar mastigando meu input ad infinitum, sem apresentar nenhum resultado.

(Estou abstraindo outras possíveis complicações, como minha conexão com a internet cair, o Windows dar pau, o iTunes que também estou rodando travar tudo… Este é apenas um exemplo idealizado)

Seria interessante se houvesse um outro programa (dá para imaginar um site com essa função) onde, se você informasse que programa está usando — WordPress, MS Word, Excel, etc. — e o input que pretende fornecer, gerasse já de cara uma previsão de resultado: “vai rodar” ou “vai travar”. Pouparia muito trabalho!

Seria interessante, mas é impossível. Alan Turing provou isso, em 1936. Não é possível criar um programa genérico capaz de, dado um outro programa qualquer X e um input para X, prever se a computação vai dar certo.

Soa meio inócuo, não? Mas pense: isso significa que um programa de computador – um conjunto de instruções lógicas, perfeitamente determinístico, movido a zero e um, sim ou não — pode ser essencialmente imprevisível.

Além de representar um álibi para programadores, que podem alegar que alguns bugs são inevitáveis porque imprevisíveis, esse  resultado poderia também informar a discussão filosófica sobre determinismo e livre arbítrio.

O argumento completo está, se não me engano, em Freedom Evolves, de Daniel C. Dennett, mas resumindo: se as coisas mais determinísticas que somos capazes de criar — programas de computador — conseguem, a partir de um certo grau de complexidade, ser imprevisíveis, por que nossas mentes, que são muito mais complexas (e muito mais imprevisíveis) que os programas que criamos não poderiam ser simplesmente fruto do determinismo das leis naturais?

Enfim: morto há mais de 50 anos, Turing continua a alimentar discussões fundamentais.