Para los que no lo sepan, Ruby es un lenguaje de programación de alto nivel, que se está poniendo muy de moda ultimamente. Los motivos son varios, entre ellos está la facilidad de programación (es un lenguaje muy sencillo), la orientación a objetos (hasta las cadenas de carácteres son objetos) o que es un lenguaje interpretado. Además, por si fuera poco es multiplataforma, lo que lo hace ideal para funcionar en cualquier sistema.
Hace poco, estuvo Richard Dale (desarrollador de KDE y experto en Ruby) en la facultad de la ULL impartiendo una conferencia acerca de este lenguaje de programación.
Como no pude asistir y me lleva picando la curiosidad desde hace algunos días con este lenguaje, me he puesto a buscar un poco y he encontrado TryRuby, una página donde explican (en forma de un intérprete de comandos muy currado en AJAX) las bondades de este lenguaje de programación. Esta en perfecto inglés, aunque se hace muy básico de lo bien explicado que está.
En este video a continuación podemos ver como David Heinemeier Hansson, el creador del framework Ruby on Rails crea un motor para un blog en menos de 15 minutos con Ruby (QuickTime).
Llevo algunos días buscando información sobre AJAX en bibliotecas y librerias pero con muy poca suerte.
Tras mirar un poco, la documentación que encuentro para comprar (sólo en inglés y por internet, por supuesto), son los siguientes libros:

Al parecer el que mejor crítica tiene es el primero, Ajax in Action. ¿Alguien ha oído hablar de alguno? ¿Sabe que tal están o conoce más títulos? ¿Alguna fuente de información en español? ¿Tutorial, guías o manuales en PDF?
Volviendo hacia atrás en el blog algunas semanas -haciendo backtracking-, comentaba el uso de la recursividad en la programación y lo interesante que resultaba definir algo contenido en la misma definición.
El Backtracking es una técnica de programación de la que se puede partir de la definición de Recursividad (vease definición de recursividad) con la diferencia que, en el backtracking, al existir varios caminos diferentes a elegir, una vez llegado al final y no cumplirse la condición establecida, volvemos atrás para seguir buscando caminos diferentes o alternativos y posiblemente correctos.
La idea del backtracking, si aún no la has entendido, se ve bastante bien en estos ejemplos del Laberinto y las n-Damas (en Java).
Finalmente, como lo prometido es deuda, subo la práctica comentada en el anterior artículo sobre recursividad que resuelve sudokus planteados por medio de la técnica del backtracking. Recordar que no es la mejor técnica ni mucho menos para resolver Sudokus, sino prácticamente usar la fuerza bruta para resolverlos con la posibilidad de volver atrás y buscar más caminos.
El programa está realizado para Free Pascal y permite:
Hay bastante cosas que son mejorables, como por ejemplo quitar algunas variables globales o la inclusión de eliminar algunos números insertando un cero (por ejemplo), pero eso lo dejo para el que quiera modificarlo, asi como el que se anime y lo «traduzca» a otro lenguaje de programación estaré encantado en incorporarlo al artículo.
Programa para resolver sudokus en Free Pascal con algunos ficheros de ejemplo.
Hace una semana, en la asignatura de Metodología de la Programación I hemos empezado a dar un tema que me interesaba bastante dentro del temario de la programación básica, que es la recursividad.

La recursividad tiene una curiosa definición, que intentaré explicar sin meterme en detalles técnicos: Se trata de realizar una función, de modo que antes de terminarla la has vuelto a comenzar a realizar.
Para comprender esta enrevesada definición se me ocurre un ejemplo sencillo: Nos encontramos en un gran apartamento y estamos buscando a una persona. Para encontrarla realizamos una acción (abrir la puerta de una habitación) para comprobar si está dentro esa persona. Ocurre que dentro de esa misma habitación pueden haber varias habitaciones más (baño y cocina por ejemplo) y a su vez, dentro de la cocina un trastero. Así pues, una vez entrado en la primera habitación mencionada y no encontrar a la persona que buscamos, nos meteremos en la cocina y si no está, buscaremos en el trastero.
Aprovechando ya este ejemplo desarrollado, en el caso de que tampoco encontraramos a la persona en el trastero, deberíamos retroceder hasta encontrar una habitación anterior que posea una habitación -valga la «rebuznancia»- en la que aún no hayamos mirado, y así sucesivamente. A esto último se le denomina Backtracking (Volver atrás).
Investigando un poco más sobre el tema, doy con algunos de los ejercicios propuestos en años anteriores en mi facultad como el juego de Las torres de Hanoi -donde se entiende muy bien el uso de la recursividad en ámbitos de programación-, la función de Ackermann o la sucesión o serie de Fibonacci.
Además de todos estos ejemplos, existe uno que me llamó mucho la atención. Se trata del número de oro (Φ), que se mantiene presente -por ejemplo- en la forma en la que se crean las caracolas o los árboles y que era considerada una cifra con multitud de propiedades mágicas por los antiguos filosofos griegos:

Este año nos ha tocado hacer un asistente para resolver sudokus, juego numérico que se ha puesto muy de moda últimamente, y práctica que me ha resultado bastante interesante. En cuánto pase la semana de entrega de la práctica subiré el código, si a alguien le interesa.
6 consultas efectuadas / Página generada en 0.041 segundos
Programado íntegramente por José Román (Manz) en XHTML y CSS estándar.
Sindicado bajo Feed RSS. Contenido bajo licencia Creative Commons
Estadísticas de visitas · Términos y condiciones · Contacto · Publicidad · Preguntas frecuentes (FAQ)