Magia negra, singularidades e gênios da lâmpada

December 13th, 2004 § 5 comments

“Em duas ocasiões, [membros do Parlamento] me perguntaram: ‘Diga-nos, Mr. Babbage, se introduzirmos dados errados na máquina, ainda sairão respostas corretas?’ Eu não consigo compreender o tipo de confusão de idéias que motivou tal questão.”

Charles Babbage (1791-1871)

Essa é uma das minhas citações favoritas na história da computação. Ao longo da minha carreira em informática, eu experimentei situações similares na pele. Existem até sites inteiros devotados a descrever incidentes de extrema confusão por causa dessa dissonância cognitiva que a informática muitas vezes causa.

O engraçado é que, por mais que os “profissionais” tentem puxar a sardinha para o seu lado, dizendo que isso é típico de usuários, o fato é que nós caímos muitas vezes no mesmo poço. Afinal de contas, também somos usuários, mesmo que de uma ordem diferente de aplicações.

Isso me lembra a história dos cultuadores da carga. Durante a Segunda Guerra Mundial, as potências aliadas estabeleceram bases em ilhas do Pacífico e o transporte de cargas para equipar os soldados lá estabelecidos se tornou comum. Vastas quantidades de roupas, comida enlatada, armas e outros itens de natureza industrializada começaram a invadir essas ilhas, beneficiando, obviamente, os habitantes das mesmas, que serviam de hóspedes e guias para aqueles soldados. Isso mudou completamente o estilo de vida daqueles aborígenes, antes ignorantes desses aspectos da civilização.

Após a guerra, com a retirada dos soldados e conseqüente fim das cargas trazidas por via aérea, muitos daqueles habitantes começaram a imitar as atividades do soldados em uma tentativa de reestabelecer a chegada de bens. Para isso, eles construíram novas pistas de pouso, aviões de madeira, torres de controle onde se sentavam usando fones de ouvido de madeira e assim por diante. Chegavam ao ponto de praticar procedimentos de sinalização de pouso tentando atrair o “favor” dos novos deuses. Desnecessário dizer, isso só levou à substituição das antigas religiões.

Em programação, existe também uma espécie de culto à carga no que tange ao uso de certas ferramentas. Por vezes, a interface de uma determinada biblioteca é tão esotérica e complicada que o domínio da mesma nunca é conseguido e os programadores que as usam tentam adivinhar os parâmetros necessários para gerar determinadas respostas. A fragilidade do código resultante sempre leva a problemas e erros que são extremamente difíceis de rastrear.

Um exemplo desse tipo de programação é a correção de bugs por meio da modificação aleatória de parâmetros e código até que o programa funcione. Não há a preocupação de entender o problema, apenas resolvê-lo. O uso de certas funções e métodos se torna ritual, motivado apenas pela idéia de que funcionou anteriormente.

Arthur C. Clarke, o famoso escritor de ficção científica, disse que qualquer tecnologia suficientemente avançada é indistingüivel de mágica. É interessante perceber que muitas vezes a programação é comparada a mágica também, pela natureza arcana de algumas técnicas ou bibliotecas.

O Jargon File define alguns termos dessa natureza. Por exemplo, temos a programação voodoo, que é o uso de “receitas” de programação avançadas que não são completamente entendidas pelo usuário mas que ele pode seguir sem precisar conhecer os detalhes por trás da mesma. O uso do mod_rewrite no Apache é freqüentemente citado como um exemplo disso, já que é incrivelmente complexo mas existem exemplos abundantes para quase qualquer coisa que se precise fazer.

Partindo daí, temos a magia negra, aquelas técnicas que funcionam, mas ninguém entende o como ou o porquê. A magia negra é uma forma menos evoluída da arte negra, que são técnicas teóricas que ninguém ainda traduziu em código pela sua complexidade. À medida que a arte negra é tornada prática, ele desce de nível para a magia negra, tornando-se depois apenas magia forte. A magia profunda é parecida com a magia negra, mas é mais prática, embora acessível a poucos. Mas é interessante notar como o que Clarke disse se aplica. Poucos programadores entendem como um stack TCP/IP funciona, embora quase todos sejam capazes de usar um.

Isso me lembra um pouco da questão da Singularidade, a temida convergência tecnológica que causara a transcedência da inteligência para um nível além da compreensão de nossa inteligência normal. Por vezes, me parece que a Singularidade é apenas uma reformulação da afirmação de Clarke aplicada a um crescimento exponencial e rápido da tecnologia. A proliferação tecnológica, impedindo a generalização do aprendizado, causaria o surgimento de inúmeras caixas pretas cujas interfaces são apenas intuídas. E disso surgiria a Singularidade, quando caixas pretas “aprenderiam” a se replicar e construir caixas pretas ainda mais sofisticadas, cheias de magia negra Clarkiana.

Voltando ao começo, então, para o usuário comum, essas caixas pretas começam a parecer varas de condão, gênios da lâmpada capaz de entender implicitamente os desejos de seus mestres e realizá-los mesmo que esses mestres não consigam formular os seus desejos apropriadamente. Isso explica a confusão percebida por Babbage.

Eu acho que parte do sucesso de linguagens como Ruby e Python se deve à clareza do processo de programação que é possível obter nessas linguagens. (Indiretamente, isso explica a valorização de profissionais em linguagens arcanas.) Poucas linguagens são capazes de oferecer o tipo de visão sistêmica que essas duas apresentam. Isso resulta em simplicidade, que por sua vez facilita o aprendizado, impedindo o surgimento generalizado dos cultuadores de carga que são vistos em linguagens como Java, C#, Perl e outras. Gera também sistemas mais explícitos, com interfaces mais compreensíveis.

E isso me faz ficar curioso quanto ao surgimento futuro de uma linguagem de programação natural. Eu fico imaginando o que aconteceria quando a programação se aproximasse diretamente dessa figura do gênio da lâmpada, capaz de processar conceitos ao invés de comandos. Eu realmente não tenho a menor idéia, mas certamente eu pagaria para ver. Enquanto isso, eu vou me divertindo com meus próprios erros.

§ 5 Responses to Magia negra, singularidades e gênios da lâmpada"

  • The Power and Philosophy of Ruby or, how to create babel-17
    http://www.rubyist.net/~matz/slides/oscon2003/index.html

    Mesmo para quem não gosta de Ruby, vale a pena dar uma olhadinha no site anterior. Tem informações interessante (sobre linguagens em geral) e como chegar a uma ‘clareza’ que o Ronaldo escreveu.

    Acredito que não estarei vivo quando o ‘gênio’ for libertado da garrafa. Na realidade acho que ele nunca será libertado.

  • Ronaldo says:

    Excelente link. O Babel-17 é um livro muito famoso, com um premissa super legal. Ainda não li, mas está em minha lista. A comparação do Matz é bem interessante. Faz um sentido danado.

    Sobre o gênio da lâmpada, eu tendo a concordar com você. Acho bem difícil que aconteça, e duvido que eu esteja vivo para ver.

  • Gesiel says:

    Belo texto… Quando crescer quero ser assim igual a vc… :-)

  • Betinho says:

    “[..]surgimento futuro de uma linguagem de programação natural.”

    Ora, usa Natural :). Num foi pra isso que a linguagem foi criada ?

    Esse seu artigo, das pessoas fazerem as coisas me lembra um caso bastante interessante numa empresa de um amigo meu. Eles estão com um processo de SW baseado no RUP. Eu conversei um pouco com ele e acompanhei durante algum tempo como é o desenrolar do processo lá. Olha, é exatamente essa frase que você falou: ninguém entende as coisas que estão fazendo e os artefatos que estão criando: só tem que seguir os passos que ensinaram e entregar as coisas bonitinhas para serem colocadas no repositório.

    Abraço!

  • Ronaldo says:

    Gesiel, desse jeito você me encabula. 😛 Essa entrada foi umas daquelas malucas que me surgiram de repente, ligando um monte de assuntos repentinamente.

    Betinho, Natural? Onde? 😀 Ah, aquela linguagem que ninguém com uma sintaxe pior do que o Pascal? 😛 Brincadeirinha…Sobre esse tipo de atitude largada, esotérica, me parece que é o padrão e não a exceção, infelizmente. E os programadores que se importam é que pagam o pato.

What's this?

You are currently reading Magia negra, singularidades e gênios da lâmpada at Superfície Reflexiva.

meta