viernes, 16 de julio de 2010

Programar programas que programan

Lisp es un lenguaje bastante particular (lleno de paréntesis, jeje). Entre las características que tiene hay una que hasta donde conozco, no poseen otros lenguajes: permite modificar la sintaxis del lenguaje mismo.
Explicándolo sin entrar en demasiado detalle, uno puede escribir macros (que no son nada ni cercano a las macros de los otros lenguajes, solo el nombre tienen parecido), que son "programas que escriben programas". Lisp utilizará esas macros que escribamos para "leer" el código en la sintaxis que inventemos, y a partir de él "escribirá" código (programas) que finalmente serán los que se ejecuten.

Algo así:

  1. inventamos una sintaxis
  2. programamos una macro, que es una función que recibe código en esa sintaxis inventada, y genera código en la sintáxis normal
  3. hacemos programas usando nuestra sintaxis inventada
  4. lisp convierte nuestros programas con sintaxis inventada, en programas válidos, usando nuestra macro
  5. lisp finalmente ejecuta los programas que se crearon en el paso anterior


Cosas interesantes en eso:

  • La macro es una función, pero recibe código como parámetro! En Lisp, la diferencia entre código y datos es bastante borrosa, uno puede manejar código como si fuesen datos fácilmente. El código son en realidad listas, y podemos transformarlas como a cualquier lista normal.
  • Programamos programas que programan! O sea, hacemos un programa que es capaz de crear código y después ejecutar el código que creó.
  • Si trabajamos en una empresa donde nos pagan por cada línea que programamos... a quien le pagan las líneas que nuestros programas programan? a nuestros programas?? :)

Con un poco de idea nomás, uno ya puede hasta crear macros que permitan escribir código lisp invertido, y que se termine ejecutando como si estuviese bien escrito, jeje.

miércoles, 7 de julio de 2010

Aplicaciones en Google Chrome

Gracias a Tavo Tell me entere de la buena noticia: ya se pueden probar las apps en Chrome!
Es el esquema de aplicaciones que se va a usar en Chrome OS.

Aquí el tutorial sobre como activarlas e instalar las tres primeras: gmail, gdocs y gcalendar.
http://bit.ly/aYhdTq

En la web encontré alguien que armó una app para greader:
http://bit.ly/bK90vp

Y yo armé una app para twitter:
http://bit.ly/bgKFUf

(un detalle: si quieren bajar las aplicaciones y chrome les da un error de como deben ser servidas, o solo se les baja y no saben como instalarlas, entonces guarden el archivo, después cambien la extensión del archivo a zip, descompriman en una carpeta, e instalen desde la carpeta como instalaron las tres primeras)

martes, 29 de junio de 2010

Consola bpython

Para los que no la conocen, bpython es una consola de python bastante interesante, con autocompletado, integración con servicios como pastebin, y otras cosas.

Pero no me gustaban los colores que trae por defecto, jeje, así que me arme mi theme estilo vim:



El archivo de tema es el siguiente:

[syntax]
keyword = y
name = k
comment = b
string = r
error = r
number = r
operator = k
punctuation = k
token = k
paren = k

[interface]
background = d
output = k
main = k
prompt = k
prompt_more = k

domingo, 13 de junio de 2010

viernes, 21 de mayo de 2010

domingo, 9 de mayo de 2010

PyDay Rafaela 2010

Qué bueno que estuvo el PyDay Rafaela 2010!

Las charlas salieron muy buenas, y asistió una cantidad de gente bastante alta (fuimos unos 92 en total). Agradezco mucho a la gente que viajó desde otros lugares del país para venir a dar las charlas, y a los que participaron o ayudaron en la organización. Todos se pasaron, y permitieron que este evento se haga realidad dando un paso muy importante para la difusión de Python en nuestra zona. Gracias!!!

Por mi parte, tuve la suerte de poder dar una charla de Django. En estos días estamos organizando cómo subir el material y los videos de las charlas. Apenas tengamos las cosas subidas, posteo avisando.

Mientras tanto dejo una foto robada del blog de Juanjo :)