Kōans

INGSOFT

Un Kōan es, en la tradición Zen, una especie de acertijo que el maestro propone a su discípulo para averiguar en qué punto se encuentra en su camino hacia la iluminación. Se trata de un problema cuya solución no puede ser encontrada a través de la razón, si no a través de la intuición…

Ya, ya, esto suena demasiado raro incluso para CRySoL.

Esto viene a cuento de los Ruby koans, que he conocido por inestimable recomendación de Magmax. A pesar de lo que he contado ahí arriba, los koans de Ruby son un montón de ejercicios de programación (274) con dificultad creciente, para aprender Ruby por medio de pequeños incrementos, de modo que el alumno aprende por sí mismo, sin si quiera un manual o tutorial, sólo observando y deduciendo cómo se comporta el lenguaje a través de su propia experiencia.

Lo interesante del tema es que los ejercicios son en realidad pruebas unitarias, así que es una especie de aprendizaje dirigido por pruebas. Puedo decir con toda seguridad que es la forma más sencilla, amena y rápida de aprender un lenguaje nuevo que he visto en mi vida. Y desde aquí os lo recomiendo a todos los que estén interesados en aprender Ruby.

Para empezar, instala:

  • ruby
  • rake

Y descarga el repo de koans:

$ git clone https://github.com/edgecase/ruby_koans.git

Y ejecuta rake en el directorio que ha creado:

ruby_koans$ rake
(in /home/david/kk/ruby_koans)
cd koans
/usr/bin/ruby1.8 path_to_enlightenment.rb
AboutAsserts#test_assert_truth has damaged your karma.
 
The Master says:
  You have not yet reached enlightenment.
  Do not lose hope.
 
The answers you seek…
  <false> is not true.
 
Please meditate on the following code:
  ./about_asserts.rb:10:in `test_assert_truth'
  path_to_enlightenment.rb:38:in `each_with_index'
  path_to_enlightenment.rb:38
 
mountains are merely mountains
your path thus far [X_________________________________________________] 0/274

Python koans

También los hay para Python en https://github.com/gregmalcolm/python_koans/wiki/ (en versiones para Python-2.6 y Python-3).

Para empezar:

$ hg clone https://bitbucket.org/mcrute/python_koans
$ cd python_koans/python 2_6
$ python_koans/python 2_6$ python contemplate_koans.py
 
Thinking AboutAsserts
  test_assert_truth has damaged your karma.
 
You have not yet reached enlightenment …
    AssertionError
 
Please meditate on the following code:
  File "/home/david/kk/python_koans/python 2_6/koans/about_asserts.py", line 12, in test_assert_truth
    self.assertTrue(False) # This should be true
 
 
Beautiful is better than ugly.