Gracias a la gente de JSConf Argentina 2014 por haberme dado la oportunidad de dar esta charla, ayer, en esa excelente conferencia. Para darle un formato dinámico, las charlas fueron de veinte minutos. Quisiera en esta serie de posts completar la exposición de lo que quería mostrar, comentando más en detalle algunos puntos, y presentando también otras demos y proyectos que quedaron fuera de la charla.
El tema de hoy es recomendarles EL libro que me sirvió de guía de estudio para un tema interminable, un clásico de la ciencia de la computación (el cuarto más citado en este siglo):
Artificial Intelligence, a Modern Approach
http://aima.cs.berkeley.edu/
de Stuart Russell y Peter Norvig. Para saber más sobre la tapa de la última edición, ver:
http://aima.cs.berkeley.edu/cover.html
Hay alguna edición en español, y yo la habré conseguido en las librerías de Buenos Aires, ya hace unos años. Son algo más de mil páginas, en veintisiete capítulos y apéndices, donde se visita desde agentes inteligentes hasta redes neuronales, desde algoritmos de búsqueda y evaluación de árboles hasta robótica y temas filosóficos. Me parece muy interesante que cada capítulo esté acompañado de notas sobre la historia del tema, lo que siempre pienso que nos da perspectiva y mejor comprensión sobre los problemas y dificultades en un desarrollo. No hay que quedarse solamente con “lo que se sabe ahora”, sino también estudiar cuál fue el camino seguido para llegar al estado actual, lo que también puede servir para entender cuál es el futuro que podemos seguir.
Tienen el seudocódigo de los ejemplos en http://aima.cs.berkeley.edu/algorithms.pdf y también en código Lisp, Python, Java en http://aima.cs.berkeley.edu/code.html
Es interminable también para investigar: AI on the web http://aima.cs.berkeley.edu/ai.html
En la edición que tengo, no aparece JavaScript como lenguaje de programación a usar. Es un buen ejercicio ir adaptando los ejemplos en seudocódigo a implementaciones en distintos lenguajes. Cada tanto, trato de implementar algo en el proyecto https://github.com/ajlopez/NodeAima. Notablemente, JavaScript debe ser el lenguaje más simple para implementar muchas de las ideas del libro. Implementaciones en lenguajes tipados y no dinámicos, como Java y C#, me parecen que tienen siempre algo de “convoluted” comparando con una implementación directa en JavaScript. Ver por ejemplo https://github.com/ajlopez/SharpAima
Nos leemos!
Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez