miércoles, 6 de abril de 2011

Timba: ideas para un lenguaje funcional y probabilístico

Seguimos poniendo cosas que estaría bueno hacer pero no hay tiempo. Si alguien quiere laburar en este tema puede robar la idea, poné al autor del este blog como N-ésimo autor del paper (donde N > 3) y listo.

Hace un par de meses luego de leer la noticia sobre enfoques unificados de inteligencias artificial (A grand unified theory of AI) y el paper correspondiente al lenguaje de modelado estocástico Church, no había una cuestión super revolucionaria en el tema pero que sí puede ser útil tener un lenguaje de ese tipo. En concreto puede ser útil para consultar fuentes de datos semi-estructuradas como Twitter, hacer encuestas y los cálculos stadísticos correspondientes (por ejemplo para Stock Trading). Lo que no gustó de Church es que es un fragmento de LISP, un lenguaje del 1958, es decir pionero para su época pero hoy en día es anticuado y sintácticamente recargado (por lo menos en los paréntesis).

Entonces el desafío es implementar un lenguaje de similares carácterísticas estocásticas, a-la Church pero con un diseño más moderno. Para los que no lo saben Alonzo Church fue un pionero de lógica matemática y la computación que prácticamente inventó la computación como Turing pero con un enfoque distinto, el cálculo lambda.

Entonces las características de Church que hay que mantener son:
  • la evaluación del expresiones del lenguaje tiene ser un sampleo estocástico;
  • consultas especiales para inferencias probabilística condicional;
  • memoización de resultados anteriores durante un cómputo, una optimización para no repetir algunos cómputos/sampleos;
  • todo esto incrustado de forma natural dentro del lenguaje para que no haya que describir las inferencias a mano cada una (este punto no parece muy claro, tal vez es obvio por eso no se entiende muy bien).
Las posibles herramientas involucradas en el diseño pueden ser:
  • Alguna herramienta moderna para el diseño de Domain Specific Languages puede ser piola. Por ejemplo dicen que Ruby tiene mucho soporte para DSLs, y además Ruby ya viene con expresiones lambda como LISP así que puede ser adecuado.
  • Para la parte estocástica, ya sea sampleo uniforme o con distintas distribuciones se puede usar alguna librería moderna de probabilidades. Por ejemplo RSRuby es para hacer cálculos de forma similar al lenguaje estadístico R. Hay muchas librerías para elegir para Ruby.
Al lenguaje se lo puede bautizar Tomás (por el matemático Tomás Bayes, pionero de la probabílidad) o sino directamente Timba, un nombre más argentino en referencia a los juegos de azar.


No hay comentarios:

Publicar un comentario