Kōan

January 29th, 2008 § 7 comments

Se há uma coisa que eu gosto na tradição Zen são os kōan. Poucas coisas expressam tanto, para o espírito ocidental, a natureza ambígua e intuitiva do Budismo. Embora eu não me subscreva ao Budismo, eu acho bem interessante o tipo de exercício por trás de um kōan.

Dois exemplos em particular na página da Wikipedia sobre o assunto estão entre os meu favoritos.

O primeiro expressa muito bem a contradição inerente em um kōan bem construído:

Se você encontrar o Buda, mate-o.

Linji

O o segundo talvez expresse melhor a necessidade de uma compreensão intuitiva do que o kōan está tentando dizer:

Quando duas mãos batem, há um som. Qual é o som de somente uma mão?

Hakuin Ekaku

Nos tempos modernos, os kōan acabaram se tornando também uma parte inerente da cultura hacker. Veja esse exemplo citado por Eric Raymond em seu Jargon File:

Um dia, quando Sussman era um calouro e estava programando no PDP-6, Minsky sentou-se ao seu lado.

— O que você está fazendo? — perguntou Minsky.

— Estou treinando uma rede neural randômica para jogar o jogo da velha — Sussman respondeu.

— E porque a rede é randômica? — perguntou Minsky.

— Eu não quero que ela tenha conceitos prévios sobre como jogar — disse Sussman.

Minsky então fechou os olhos.

— Para quê você está com os olhos fechados? — Sussman perguntou ao seu professor.

— Para que a sala fique vazia.

Naquele momento, Sussman alcançou a iluminação.

Esse kōan tem uma resposta definida, o que não é o caso da maioria deles, mas representa um exercício similar. Aliás, ao contrário dos kōan Zen, os relacionados com programação tendem a ser um tanto ou quanto humorísticos, representando muito da indisciplinada arte que é o desenvolvimento.

Neste aspecto, um outro exemplo fascinante vem de Guy Steele em uma longa discussão sobre Scheme na lista Lightweight Languages:

O venerável mestre Qc Na estava caminhando com seu estudante, Anton. Com a esperança de levar seu mestre a uma discussão, Anton disse:

— Mestre, ouvi dizer que objetos são um boa coisa. Isto é verdade?

Qc Na olhou com pena para seu estudante e respondeu:

— Pupilo ignorante! Objetos são somente uma pobre versão de closures.

Entristecido, Anton pediu licença ao seu mestre e retornou à sua célula, intento em estudar closures. Ele leu cuidadosamente toda a série de artigos Lamdba: The Ultimate e seus primos e implementou um pequeno interpretador Scheme com um sistema d eobjetos baseado em closures. Aprendeu muito e esperou o momento de encontrar-se com seus mestre e informá-lo de seu progresso.

Na sua próxima caminhada com Qc Na, Anton tentou impressionar seu mestre dizendo:

— Mestre, eu estudei diligentemente o assunto, e agora entendo que objetos são realmente uma versão pobre de closures.

Qc Na respondeu batendo em Anton com seus cajado e dizendo:

— Quando você vai aprender? Closures são uma pobre versão de objetos.

Naquele momento, Anton alcançou a iluminação.

Esse é especialmente interessante porque não tem uma resposta específica mas serve como um excelente ponto de partida para um estudo sobre o que paradigmas realmente representam. O que, obviamente, me leva a pensar que deve existir algum kōan sobre REST. Eu só não encontrei ainda.

Dentro da contradição, ambigüidade e necessidade intuitiva dos kōan, eu acho que eles dão um casamento perfeito com a arte que nós, programadores, praticamos. Como eu disse acima, isso vem da parte que não pode ser disciplinada e que depende de uma compreensão interna que todo programador possui do quê e como ele deve fazer o que faz. O que os torna, é claro, naturalmente interessantes para longas discussões sobre a prática da arte.

De qualquer forma, seja para filosofar ou programar, kōan dão uma bela leiura. E vocês, conhecem algum bom kōan?

§ 7 Responses to Kōan"

Leave a Reply

Your email address will not be published. Required fields are marked *

What's this?

You are currently reading Kōan at Superfície Reflexiva.

meta