El viernes estaré dando una conferencia sobre Ciencias Computacionales en el Tec de Ciudad Juarez, mi alma mater, donde me convertí en Ingeniero en Sistemas Computacionales y Programación (apenas el siglo pasado). No estoy seguro que las autoridades que me invitaron me ubiquen como ex-alumno. Ahora sí que daremos un paseo por la Avenida del Recuerdo. Si me leen por allá, los invito, la plática que daré es de mis favoritas.
7 de abril de 2011
4 de abril de 2011
Feliz cumpleaños Microsoft Corp...
...Que por allá de 1975 era Micro-soft, estaba basada en el caluroso Albuquerque y era el lugar donde los jovencitos de 19 y 22 años Bill Gates y Paul Allen hacían de la mancuerna BASIC-Altair el inicio de la era del cómputo personal. Mi primer computadora fue una TRS-80 de Tandy / RadioShack, así que me tocó escribir mi Space Invaders en el bebé de Bill y Paul. Feliz Cumpleaños Microsoft!
Publicado por
Raúl
0
comentarios
Etiquetas: altair, basic, microsoft, tecnología
2 de abril de 2011
... Y por Tabasco
Gracias a la UJAT y a Citi Tabasco por invitarme a Villahermosa a platicar con los jóvenes futuros emprendedores. La gripa no logró detenernos, la barbacoa es celestial, y la plática resultó bastante divertida. Espero que pronto tengamos nuevos emprendedores, más autores tabasqueños (prometo leer los libros) y nuevas invitaciones.
Publicado por
Raúl
0
comentarios
Etiquetas: emprendedores, innovacion
29 de marzo de 2011
De gira por Sonora
¿Cuál es la diferencia entre Facebook y Twitter?
Publicado por
Raúl
0
comentarios
Etiquetas: emprendedores, innovacion
8 de octubre de 2009
My ramblings on time travel (in fiction)
Hace un par de noches estaba leyendo un panel de discusión sobre la película "The Time Traveller's Wife" ("Te amaré por siempre" en la ingeniosa traducción) y uno de los participantes argumentaba que existía un grave error, según las reglas de viaje en el tiempo presentadas en esa película, sobre lo que el personaje principal podía o no podía hacer en sus escapadas en el tiempo. A mí me parece que TTTW es una película que logra ser fiel a sus propias reglas sobre el viaje en el tiempo, y el libro en el que está basada aún más.
Por eso me pareció divertido leer a toda una serie de bloggers mostrando sus argumentos de por qué TTTW no presentaba errores en las acciones del personaje, y cómo a nuestro excéptico amigo no le cabía en la cabeza ninguna de esas explicaciones. La lectura por supuesto me llevó a realizar mi propio análisis de la película, y con éste, a comparar con otras de las muchas películas que he visto y que involucran viaje por el tiempo.
De este modo, y sin más preámbulo, les presento, amigos cibernáutas, mis propias reflexiones sobre la dinámica del viaje en el tiempo, y su uso (y abuso) en la ficción. Después pondre mi muy personal, nada humilde y definitivamente subjetiva opinión sobre la calidad de la consistencia interna en diferentes películas y libros.
Perdón por el inglés, pero finalmente, esto fue una respuesta a un blog en ingles
Continuara
Publicado por
Raúl
0
comentarios
9 de mayo de 2008
Entre paréntesis y lenguajes funcionales
Por ahora, me dispongo a traducir el pequeño programa que presenté en mi columna.
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.
Publicado por
Raúl
0
comentarios
Etiquetas: cálculo lambda, lenguajes funcionales, programación, Software Guru
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.
Publicado por
Raúl
2
comentarios
