Koans – Introdução

A Filosofia dos Koans

O koan é uma maneira utilizada desde a antiguidade pelos mestres orientais para transmitir seus ensinamentos aos seus discípulos, visando abrir os olhos do indivíduo à sua própria consciência. Um dos primeiros koans de que se tem conhecimento nos indaga “Qual a imagem do seu rosto antes de nascer?”, “Você consegue vê-la?”. Essa indagação se propõe a exercitar a mente, a buscar a resposta. Ao aceitar o koan, passamos a questionar tudo o que até então aceitaríamos como impossibilidade lógica, como verdade absoluta, e passamos a compreender que a maneira pela qual enxergamos as coisas ao nosso redor nem sempre é correta ou única. O koan força o indivíduo a assumir uma atitude inquisitória até praticamente chegar à beira de um precipício mental. Propõe colocar a mente em um estado de total esforço até encontrar a resposta. Ao abandonar a racionalidade, transformam-nos na própria questão, tornando-nos capazes de ver a nítida imagem da “face original”.

O que isso tem a ver com programação?

O conceito de aprendizado gradual não é novo. Na década de 1960 a 70, a inovação na área de programação de computadores foi marcada por dois paradigmas: procedural (inperative) do qual a linguagem Fortran foi a mais utilizada e o funcional (declarative) onde o LISP foi a mais comum. Muitos livros foram escritos com a finalidade de explicar minuciosamente cada paradigma e linguagem, mas esses livros eram bastante complicados de se ler .No final dos anos 80 que um livro chamado The Little LISPer introduziu uma nova forma de aprender programação funcional, o livro seguia um formato de uma conversa onde uma pergunta era feita e, em seguida, a resposta era dada.

Is it true that this is an atom? turkey Yes, because turkey is a string of characters beginning with a letter.
Is it true that this is a list?(atom turkey or) Yes, because it is a collection of atoms enclosed by parenthesis.

Este formato era bem mais simples de ser seguido, isso então forneceu uma base para que pudéssemos pegar ideias complexas e dividir em varias ideias menos complexas, dessa maneira vimos que também era um ótima forma de ensinar sintaxe e detalhes de varias linguagens. E se prestarmos atenção a ideia de propor uma verdade e em seguida verificar a sua veracidade, é a essência de um teste. Mais especificamente os famosos e clássicos testes unitários. Pretendo fazer mais alguns posts mostrando o koans na prática, comecei com esse porque não queria começar a falar de uma coisa sem antes falar um pouco de suas origens.Esse post contem alguns resumos de meus estudos e algumas traduções de artigos sobre o assunto. Abordarei os koans em algumas linguagens (ruby, javascript e python), mas saiba que esse mesmo conceito se aplica as outras linguagens.

Bruno Henrique - Garu

Software Craftsman. Distributed Systems, Software Architecture, Testing, Artificial intelligence and Machine learning enthusiast. Philosophy and Education lover. Software Engineer at Enjoei. @RuPyNatal organizer

Natal/RN, Brazil http://garulab.com