miércoles, 6 de abril de 2011

My First Poem Written in Python Code

#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
#
######   Poem in Python   #######
#################################
#              by               #
#            thermo             #
#     therm000@gmail.com        #
# 6th of April, 2011 - 02:49 PM #
#################################

# Compiling and printing nice poem 
# Python 2.6.5

your_own_money = 'energy'
your_voice = 'thunder'
life = 'unborn alphabet of desires'
pain = 'unborn'

def dreaming(state, but):
 try:
     yield your_voice
 except:
     for coins in your_pocket:
         print your_own_money 
 finally:
     with your_eyes as food:
         print __doc__ and poetry     

 pass
 gestures = 'change'
 for people in the_street:
     lambda signs: signs and gestures
 exit()

while life.startswith( pain ):
 while False or None:
     continue
 print None or __name__+' '+your_voice
 life = life.replace('desires','desire').replace(' alphabet of','')
 life = life.replace('un','')
 dreaming(None or True, not False )
 pain is not your_voice

print life

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.