“Más rápido que C++, más conciso que Perl, más regular que python, más flexible que Ruby, más tipado que C#, más robusto que Java y no tiene nada en común con PHP”

Abril 23rd, 2007

¿Cual es la respuesta a la adivinanza? Pues veanlo en la entrevista con Audrey Tang. No se pierdan la generación de números Hamming.

Enlaces Darcs

Abril 19th, 2007

¿Eres programador? ¿Y usas un sistema de control de versiones? ¿No? ¡Cocacho!

Creo que el sistema más sencillo para aprender a usar es subversion. Lo utilizo con mucha frecuencia, pero también utilizo darcs, un sistema que no depende de un repositorio de código fuente central. Me hace feliz poder crear cuantos repositorios yo quiera, cada uno es una rama de desarrollo. Cuando tienes que unir ramas, Darcs hace las cosas muy fáciles porque el sistema sabe que parches hay en uno y en otro.

Pero Darcs tiene un lado malo. Cuando un repositorio tiene conflictos, Darcs es lentísimo. Por esa razón desaconsejan a los desarrolladores de GHC enviar parches que tengan conflictos. Este hilo de correos es un buen resumen de la historia. El problema de conflictos es un problema dificil, Darcs trata de hacer las cosas sencillas pero sacrifica eficiencia, mientras otros sistemas obligan a tomar más pasos si hay conflitos.

Al parecer existe una solución planeada al problema de Darcs, pero no está demás ver que otras cosas hay en el mundo.

Scripting, de manera limpia

Abril 18th, 2007

Comienzas por un script en shell, luego ves que las cosas se complican y crecen, entonces perl o python es lo que eliges. Cual es el siguiente paso? Abandónalos y cambia a Haskell! Algunos buenos ejemplos aqui y aqui. En el primer ejemplo Don tiene una cita digna de repetir: La mónada te da un separador “;” programable.

Parser Combinators en Smalltalk

Abril 17th, 2007

Gilad Bracha, conocido por todos los que siguen los avances en el mundo Java, tiene una nota acerca de combinadores de parsers (Parser Combinators) escritos en Smalltalk. Los combinadores tienen una sintaxis agradable y concisa, aún tomando en cuenta que se debe emular evaluación perezosa (algo necesario ya que los parsers pueden ser recursivos).

Parser combinators (PCs) es un excelente ejemplo de código en programación funcional. Los programas PCs son declarativos: describen la gramática del lenguaje casi directamente. Mucho más fácil que escribir un parser a mano o usando yacc, por ejemplo.

El mundo Haskell tiene muchas librerías de Parsers, yo uso los PCs de Utrecht escritos por Doaitse Swierstra y GHC distribuye los combinadores Parsec escritos por Daan Leijen (un ex-colega de Utrecht).

Evaluación perezosa para el ciudadano de a pie

Diciembre 27th, 2006

¿Que es la evaluación perezosa y para que puede servir? Es una pregunta que traté de responder en este blog, al mismo tiempo que daba argumentos de porque Haskell es un lenguaje que se puede usar en la práctica. Es mucha información para digerir en una sola cena, alternativamente puedes leer de evaluación perezosa en los siguientes lugares:

Leyes de fusión, programas elegantes con la eficiencia de C

Diciembre 7th, 2006

Una disyuntiva para el programador que sufre la complejidad del mundo:

¿Debo escribir un programa elegante que sea facil de mantener? ¿O mejor escribo uno que sacrifique elegancia por eficiencia?

En la mayoría de los casos es mejor elegir la primera opción, pero como veremos en esta nota, al parecer es posible tener al mismo tiempo elegancia y eficiencia, lo mejor de dos mundos.

Continuar con la lectura »

Nuevo enlace

Noviembre 7th, 2006

Acabo de añadir un nuevo blog a la lista que tengo en la derecha de la página, se llama Knowing and Doing. Las cosas que me llamaron la atención son los resúmenes de las charlas de Philip Wadler y Guy Steele en la conferencia OOPSLA de este año. No leí muchos artículos de esta conferencia y nunca estuve allí, pero sé que tiene mucha relevancia para el mundo orientado a objetos de lenguajes de programación. La charla de Philip Wadler muestra que hay una creciente interacción entre los mundos orientados a objeto y funcional.

Perezoso y funcional, eso si es estilo!

Agosto 11th, 2006

Como hacer nuestro código más legible y fácil de mantener? Para eso necesitamos mejorar el estilo de nuestro código leyendo programas en otros lenguajes de programación y que usan librerías de mayor nivel de abstracción. En pocas palabras, no hay que tener vergüenza en robar ideas.

Un estilo que ayuda mucho en la legibilidad es el estilo funcional, en pocas palabras, en este estilo construyes un programa a partir de la composición de funciones pequeñas y entendibles. Este estilo no es exclusividad de lenguajes funcionales, existen varios lenguajes populares como Python y Ruby que lo permiten. Lo que hoy quiero mostrarles es como este estilo se vuelve aún más útil cuando incorporamos evaluación perezosa (Lazy Evaluation). Continuar con la lectura »

Novedades

Agosto 1st, 2006

Hace una semana mas o menos participamos del mayor concurso de programacion que se lleva a cabo anualmente, el ICFP contest. Pasamos tres dias y tres noches programando como locos y durmiendo muy poco. Por diversas razones no sacamos el primer lugar :) , entre las cuales fue una implementacion de la maquina virtual que no era suficientemente rapida en Haskell asi que tuve que desenterrar mis conocimientos de C para implementarla. Me tomare el tiempo de escribir algo durante los siguientes dias pero por ahora si quieren leer algo en español pueden darse una vuelta por una página que encontré hace poco.

Entre otras noticias en la Universidad Mayor de San Simon, donde estudié, Pablo y compañía instalaron un sistema de blogs en el que ya tuvimos algunas riñas religiosas :) . Pueden visitar los mensajes aquí y aquí, también pueden fijarse en los últimos mensajes que la gente publicó en sus blogs.

Haskell y matemáticas, Emacs y blogs, bla bla bla

Junio 28th, 2006

Despues de una breve sesión de hacking me puse a leer dos blogs por mucho rato. Pueden llamar a esto una manera ineficiente de trabajar pero yo lo justifico ya que atrapé el error que me tenía desesperado por la tarde.

El primer blog, A Neighborhood of infinity, habla de toda clase de temas de matemáticas de entre los cuales le robé contenido (parte del escaso contenido que logré entender en ese blog) que usé en la anterior nota de diferenciación automática. Solo tuve que transcribir formulas a Haskell y funcionó. Claro que la generalización a derivadas de mayor orden y graficación requirieron esfuerzo de mi parte. Ahora lo que quería compartir son las once razones que sigfpe, el autor del blog, escribió justificando el uso de Haskell en la escritura de programas para matemáticas. Me gustó como suena la razón número nueve Haskell Eats Circular Definitions for Breakfast.

Una de las cosas que leí en el segundo blog (las peroratas borrachas de Stevey) me hizo pensar mucho en la manera en que uso Emacs. Ahorro mucho tiempo utilizando este editor de editores, pero quiero hacer más! Resulta que a menudo me falta tiempo (la excusa que tienen todos) para escribir notas en mis blogs, y una de las mayores razones es la interfaz de blogspot (que asco!) y wordpress(algo mejor que blogspot). Me propuse mejorar mi productividad configurando mi emacs para publicar notas directamente apretando una tecla. Espero que esto me tenga escribiendo más cosas después.