viernes, septiembre 25, 2009

El santo grial de la depuración es inminente

Hay algunas situaciones difíciles de depurar, por ejemplo cuando se pierde el control de un puntero que destruye la mitad de la memoria antes de causar una violación de segmento.
Si nunca han pasado por esto hay dos alternativas, o nunca han trabajado en C o son mucho más inteligentes que yo.
Lo cierto es que ese problema sería fácil de depurar con solo permitir que nuestro depurador nos deje ejecutar el programa en reverso, así solo ejecutamos el programa hacia atrás mientras vamos recuperando toda nuestra memoria, hasta el punto donde el puntero se desboca, y seguramente estaremos viendo porque se desbocó.
El problema siempre ha sido que eso es mucho más fácil de pensar que de implementar, porque lo que se requiere es prácticamente una máquina del tiempo para lograrlo.
Pues aunque Ud. no lo crea, se supone que la versión 7 de GDB permitirá la ejecución en reversa.  Lo mejor es que esta versión está prometida para este mes, por lo que asumo que es inminente su distribución, no tengo idea del precio a pagar por esta funcionalidad, pero de seguro no será barata, claro que podremos ejecutar los programas desde el final hasta el comienzo.
Filosofando un poco: un programa que se ejecuta hacia atrás se alimenta de soluciones y genera problemas, así que es mejor no dedicarle muchos recursos a esta tecnología.
Ahora en serio, si esta característica algún día fuera barata podríamos resolver algunos problemas clásicos de sistemas operativos con mucha facilidad, por ejemplo ya no nos preocuparíamos por los deadlocks, porque solamente hay que retroceder el programa adecuado un poquito hasta que se libere el recurso que causa la tranca.

martes, septiembre 22, 2009

Migrando de Subversion a Git

Este es tal vez la mejor receta que he encontrado para migrar repositorios de Subversion a Git:

  http://blog.woobling.org/2009/06/git-svn-abandon.html

Para que todo vaya bien hay que tener un archivo authors.txt que se usa en uno de los comando, mosca con eso.  Por lo demás esto parece dejar el repositorio casi como si fuera originalmente hecho en Git.

martes, septiembre 08, 2009

Popularidad de los navegadores

Viendo los reportes de Google Analytics sobre mis blogs noté algo interesante, y es que al menos la gente interesada en los tópicos que se tratan aquí usan mayormente Mozilla:
1.
Firefox
55.17%
2.
Internet Explorer
24.63%
3.
Mozilla
12.32%
4.
Chrome
3.94%
5.
Opera
2.46%
6.
Safari
0.99%
7.
Konqueror
0.49%
Una relación de 67% en Mozilla contra 25% de IE.
Las estadísticas de Perliscopio, son mucho más abrumadoras, aunque el blog es nuevo y no tiene tantas visitas, pero la relación allí es de 75% para Mozilla y 7% para IE. La conclusión evidente es que perlero no usa IE, ni que use Windows.

sábado, septiembre 05, 2009

El renacimiento de Perl

En el año 2006 estaba coordinando 2 proyectos, uno de ellos era una aplicación web (obviamente en Catalyst), y parte de mi trabajo es buscar mejores herramientas para facilitar la labor de los programadores, así fue como me topé por primera vez con Moose, que aunque incipiente, captó mi atención de inmediato, así seguí los enlaces hacia Class::MOP, donde me hablaban del Meta Object Protocol, y por terminé aprendiendo algo de Common Lisp y particularmente CLOS.
Más o menos al mismo tiempo estaba coordinando el desarrollo de un sistema distribuido para Linux (en C++ por requerimiento del cliente), y también estaba en la búsqueda de alguna herramienta que aliviara el dolor de que nos causaba ese desarrollo, conocí Erlang y redescubrí la programación funcional, que me llevaron finalmente a OCaml, Haskell y Scheme.
[artículo completo]

lunes, agosto 31, 2009

La magia de Perl

Una de las características que hacen de perl una navaja suiza (por cierto afilada) son las construcciones mágicas del lenguaje, que permiten escribir micro programas rápida y fácilmente, y es una de las razones por las cuales el lenguaje tiene fama de incomprensible.
Aunque el uso de estas construcciones están contraindicadas en la programación de sistemas, son de gran utilidad en el día a día de los administradores de sistemas y programadores, por ello voy a explicar las más comunes, para que puedas apreciar su potencia y entender los scripts que se crucen en tu camino.
[artículo completo]

martes, agosto 25, 2009

Perl arcaico

Hace un par de dias me tocó atender un proveedor que vino a ofrecer sus servicios para el desarrollo de una aplicación web.
Como alguno de los participantes de la organización tuvo que manejar un imprevisto aproveché para iniciar un pequeña investigación durante la charla informal: "¿Que herramientas de desarrollo utilizan en su empresa?".
En un mundo ideal la respuesta hubiera sido: "Perl", pero me informaron que ellos trabajan principalmente en Python, aunque pueden trabajar en otros ambientes, incluyendo Perl.
Después de informarles que en la organización preferimos Perl para el desarrollo de nuestras aplicaciones, y después de un micro debate religioso, uno de ellos (Juan) concluyó:

En definitiva cualquier cosa que se puede hacer en un lenguaje se puede hacer en el otro, solo que en Perl la programación es más arcaica
en aquel momento casi me altero, pero en vista de que llegó el que faltaba y que lo importante era la reunión, me quedé tranquilo.
Ahora en retrospectiva me pregunto: ¿a qué se refería con eso de que Perl es arcaico? ...
 [artículo completo]

Reunificando Scheme

Menos de dos años han pasado desde la polémica 6ta revisión del lenguaje Scheme (R6RS), que causó una ruptura de la comunidad. El lenguaje siempre se caracterizó por ser puro y minimalista hasta que este nuevo estándar duplicó el tamaño de la especificación.
En el proceso de ruptura apareció un movimiento para mejorar R5RS, pero manteniendo el lenguaje fiel a sus principios, así nació ERR5RS.
Scheme nunca se convirtió en un lenguaje práctico para el despliegue de aplicaciones, debido a que muchos aspectos de la implementación no eran parte del estándar, dificultando la interoperación del código entre las diversas implementaciones del lenguaje, así que la comunidad de scheme siempre ha estado de una u otra forma dividida, sin embargo R6RS causó una gran fractura, con la mayoría de los fabricantes quedándose en R5RS o migrando a ERR5RS, mientras las implementaciones grandes se fueron por la vía de R6RS.
Esto es una lástima porque los fundamentos matemáticos sobre los que se basa Scheme son muy formales, de hecho toda la semántica del lenguaje está definida matemáticamente a usando semántica denotacional.
Hace unos días para mi sorpresa se activó nuevamente la lista de discusión de R6RS, y la discusiones que vi fueron sobre la división del lenguaje en dos versiones y los posibles nombres que se le darían cada versión!
En un esfuerzo por reunificar la comunidad se piensa en que la próxima versión de Scheme (R7RS?), tendrá una versión light que permita implementaciones pequeñas y mantener a los puristas contentos, mientras la versión pro sería más pragmática, con énfasis en la implementación y desarrollo de sistemas y en interoperabilidad entre las versiones de los diversos fabricantes de compiladores, esta versión profesional podría incluir  un sistema de módulos y una librería estándar.
Ojala este nuevo esfuerzo pueda reunificar nuevamente a la comunidad sin convertir Scheme en un nuevo Common Lisp.

domingo, agosto 23, 2009

El Ironman de Perl



La Organización de Perl Iluminado (enlightened perl organisation), está promoviendo un maratón de blogging en perl para de motivar a los miembros de la comunidad a promover el uso de este lenguaje.
Las reglas son simples:
  • Se puede escribir cualquier cosa sobre Perl, desde información básica hasta avanzada incluso chistes (lo que brinda incluso oportunidad a los detractores del lenguaje).
  • Los artículos pueden ser cortos o largos, así que se pueden escribir recomendaciones simples, trucos, etc.
  • Los artículos no tienen que ser necesariamente en inglés, asi que podemos hacer artículos en castellano!
  • Hay que publicar al menos 4 artículos cada 32 dias, y ningún artículo puede tener más de 10 días de separación.
Si estás interesado puedes enviar un mensaje a ironman@shadowcat.co.uk con los detalles del blog, luego inscribe el feed y tu blog será agregado en http://ironman.enlightenedperl.org/.
Yo por mi parte estoy comenzando un nuevo blog: Perliscopio a ver si logro mantener el ritmo ;-)