9 de mayo de 2008

Entre paréntesis y lenguajes funcionales

"Si no creyera en la locura
de la garganta del cenzontle..."
-Silvio Rodríguez

Antes que nada una disculpa para mis lectores de Software Guru. Me confié demasiado del software de la empresa de las ventanitas y en mi columna de mayo-junio la letra griega λ (lambda) fue sustituida por un hermoso cuadradito. Estimados lectores, tomen un plumón y sustituyan todos los cuadraditos por la letra λ en su copia de la revista. Y en una futura entrada hablaremos de la interoperabilidad.

Por ahora, me dispongo a traducir el pequeño programa que presenté en mi columna.


(define infinito (λ ( ) ((λ (f) (f f)) (λ (f) (f f)))))


Este programa, escrito en el lenguaje Scheme, me gusta porque muestra la expresividad del lenguaje y el poder del cálculo lambda, en el que está basado. De manera adicional, demuestra algunos conceptos interesantes de teoría de la computación.

Primero defino la semántica de las expresiones define y λ, así como el uso de funciones:

  • (define var expr) asigna el resultado de evaluar la expresión expr a la variable var;
  • (x) expr) define la función que recibe el parámetro x, y que regresa el resultado de evaluar la expresión expr;
  • (f x) evalua la función f con el parámetro de entrada x.

Con estas definiciones podemos olvidar los paréntesis y nuestra expresión se ve menos intimidante:

(define infinito ( ) ((λ (f) (f f)) (λ (f) (f f)))))

Así, infinito es el nombre de una función sin parámetros de entrada que, de ser evaluada, regresa la expresión de color rojo. esta expresión en rojo es muy interesante. Veámosla a detalle, coloreando sus partes:

((λ (f) (f f)) (λ (f) (f f)))


Las expresiones verde y roja son de hecho la misma expresión, y ahora debe ser sencillo para el cibernauta descifrarla: (f) (f f)) es la función de parámetro f que regresa la expresión (f f) . Esta última, a su vez, ¡sería una función f evaluada en sí misma!

Con esta expresión vemos una de las características de los lenguajes funcionales: las funciones son ciudadanos de primer orden y pueden tratarse como cualquier parámetro o variable.

Descifremos al fin nuestra expresión:

  • (λ (f) (f f)) es una función que recibe la función f como entrada y regresa f evaluada en si misma. Llamemos a esta función cenzontle;
  • ((λ (f) (f f)) (λ (f) (f f))) es la función cenzontle evaluada en sí misma; lo interesante de la función cenzontle es que, al ser evaluada en sí misma, regresa exactamente la misma expresión, esto es, ¡la función cenzontle evaluada en sí misma! Este es uno de los ejemplos más simples y no triviales de un programa que se escribe a sí mismo (Esta función se conoce como la función Ω -Omega- en cálculo lambda);
  • finalmente, llegamos a nuestra expresión original, (define infinito ( ) ((λ (f) (f f)) (λ (f) (f f))))), que de manera simple y elegante, define infinito como una función que, al ser evaluada, regresa a la función que se replica eternamente a sí misma.

Para más información sobre Scheme y el calculo lambda pueden consultar la sección sobre el tema del sitio de Think Artificial.

6 de marzo de 2008

Recuento del BRM

Estoy de regreso de Ginebra, completamente exhausto pero muy satisfecho. El trabajo de las delegaciones ha enriquecido mucho el cuerpo del estándar. Participé en comites "ad-hoc" para revisar el tema del formato de fechas y el tema de formatos de transición (nombre que se le asignó a los archivos creados en versiones viejas de Office). También pude intercambiar comentarios sobre aspectos de internacionalización con uno de los delegados de Israel, y me queda clara la preocupación que la delegación de Malasia tiene por proteger su industria del software (Malasia muy probablemente votará NO al estandar).
En cuanto a México, nuestra delegación no podría haber sido más polarizada, sin embargo logramos hacer un buen trabajo, consiguiendo que en nuestras dos participaciones el pleno aceptara nuestras propuestas e integrándonos a las diversa discusiones y grupos de trabajo.
No todo es miel sobre hojuelas, dado lo controvertido de este estándar. Creo que la narrativa de Tim Bray, de la delegación canadiense, sumariza las distintas complejidades del BRM. Por otro lado, la recopilación de Brian Jones sobre las resoluciones tomadas a lo largo de los cinco días del BRM es un indicador de la cantidad y calidad del trabajo realizado.
En unos días, se tomará una decisión sobre la aprobación del estandar. Primero en México, dentro del comité de software convocado por la Dirección General de Normas. Posteriormente la decisión de ISO.

Por lo pronto, sólo espero. Mientras, puedo decir que me siento muy satisfecho y afortunado de haber participado en este proceso. Buenas noches, cibernáutas.

26 de febrero de 2008

BRM en Ginebra

Estoy en Ginebra, a dos días del BRM. Ha sido una discusión interesante, con las delegaciones de cada país presentando sus comentarios a las respuestas de ECMA sobre su propuesta para que OOXML se convierta en el estándar 29500 de ISO.

Me ha tocado participar de cerca con la delegación canadiense, algo muy interesante dado que, aunque algunos de sus integrantes son muy vocales en su rechazo a ISO 29500, tienen propuestas muy claras sobre las mejoras al estándar y un equipo muy dinámico dispuesto a hacer realidad estas mejoras.

Mis pláticas con los canadienses se extendieron hasta bien entrada la tarde y estoy exhausto, pero se renueva mi opinión sobre el calibre de muchas de las personas que han venido al BRM, y el ímpetu para mejorar el texto del estándar.

12 de febrero de 2008

OOXML y la opinión pública

Bueno, creo que es imposible negar que la aceptación de OOXML como estandar ISO ha despertado interés. Me han buscado dos reporteros para pedir mi opinión sobre el tema.

El primero fue francamente agresivo en cuanto a buscar una confrontación en la guerra de estándares, y me pareció que el pensaba que la adopción de OOXML sería una afrenta al software libre.

La segunda reportera me agradó mucho, hizo preguntas muy coherentes, como, ¿cuáles serían las repercusiones de la estandarización en la comunidad?, ¿quién se beneficiaría o se perjudicaría?, ¿cómo cambiará mi manera de trabajar?

Espero leer pronto las entrevistas para darles mis comentarios.

28 de enero de 2008

OOXML, round dos

A finales de febrero se llevará a cabo en Ginebra la reunión del comité internacional de ISO para discutir la inclusión de Open Office XML como un estandar de ISO.

Yo he sido miembro del subcomité mexicano desde el año pasado, cuando se votó para decidir si OOXML era sometido por la vía rápida.

Ahora vamos por la segunda parte, con las recomendaciones que se han hecho a nivel mundial, y en Ginebra espero un debate intenso e interesante ( y espero que por las razones correctas), dada la gran polarización que ha generado este estándar. Ya les estaré contando.

23 de enero de 2008

Ciberespacio y mundos virtuales

Creo que es interesante empezar este soliloquio con la cultura del blog. En estas épocas de franca sobrecarga de información, el blog es quizá el artefacto más representativo del fenómeno de descentralización de contenidos. El blog es la perfecta caja de madera en la que uno puede subirse a dar un improvisado discurso. Que además exista una audiencia ya es otra cosa.

Es cierto: con todo mundo, su mamá y su perro publicando en blogs, la cantidad de contenido inutil, aburrido, egocéntrico e irrelevante es inmensa. Pero también es cierto que, con un poco de paciencia, se pueden encontrar verdaderas gemas en el mundo de los blogs, haciéndolos pieza primordial del conglomerado de aplicaciones que soportan el concepto de web 2.0 (más de esto posteriormente). Los bloggers recopilan información de aquí y de allá, y presentan con desenfado su opinión sobre el tema. Ayudados por un motor de búsqueda, no es raro que terminemos leyendo la entrada que un anónimo blogger ha realizado sobre el tema que nos interesa, escondido entre otras muchas entradas sin ninguna relacion que, debemos confesar, a veces también leemos, por morbo o curiosidad; esa curiosidad de conocer a ese extraño que nos escribe desde el otro lado del ciberespacio.

En fin, cuando finalmente damos con información pertinente en un blog, es posible que pueda superar en valor a la información que encontraríamos en un portal tradicional. Por ejemplo, es la opinión general que los blogs de los corresponsales de guerra en Irak daban una versión más veraz de la noticia que los reportes "oficiales" de CNN. Aunque es probable que los corresponsales hayan debido cerrar esos blogs por problemas derivados de obligaciones contractuales, la opinión general es que las noticias del blog fueron censuradas por no presentar la imagen que el gobierno estadounidense quería dar de la invasión. Aún así, la prensa debió reconocer el poder de los blogs en la opinión pública.

En otros casos, he encontrado que sólo es posible encontrar información sobre un tema en un blog. Hace tiempo, movido por mi interés en los hipopótamos, acudí a tomar una foto de una banca colocada en el Paseo de la Reforma. Me encontré con que había toda una colección de bancas en una exhibición de arte-objeto callejera. Quise saber más sobre la obra y los artistas, pero los sitios oficiales resultaron una pobre fuente de información. Finalmente, encontré la mejor colección de fotos de la exhibición en el blog de una chica con afición a la fotografía.

Estamos en la generación del blog. Es parte de nuestra cultura. David Duchovny, en su último papel, representa a un escritor venido a menos que se convierte en blogger para subsistir.
La tecnología forma parte de nuestras vidas. Con esto, por el momento, me bajo de mi cajita de madera. Hasta la próxima.

21 de enero de 2008

Bienvenidos

Hola estimado Cibernauta:

Me alegro que hayas dado con este espacio. Aquí pretendo opinar (libre y quizá no tan humildemente) sobre diversos aspectos de las Tecnologías de Información. Espero poder colocar material de interés, divertido, y de actualidad sobre tecnologías de información, herramientas de software, gadgets y otras cosas relacionadas.

Espero que sean de utilidad o despierten tu curiosidad.

Saludos del hipopótamo en su nueva versión