sábado, 5 de septiembre de 2009

El renacimiento de Perl

[Google English Translation]
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.
Así que el 2006 y 2007 fueron años de diversión, aprendiendo nuevos lenguajes, mecanismos y paradigmas de programación, lo interesante es que a pesar de adquirir pericias en herramientas tan bien hechas y con una potencia impresionante como las mencionadas, todavía hoy, quien me ayuda a poner la comida en la mesa es principalemente Perl.
Algunos profetas del desastre predicen periódicamente la muerte de Perl, sin embargo, todavía se consigue más trabajo en Perl que en otros lenguajes similares, como se aprecia haciendo una búsqueda en indeed. Cuando les vengan con el cuento de que Perl está muerto no caigan por inocentes, porque en realidad está vivo y tomando impulso nuevamente. Algunos argumentarán que el crecimiento de los otros es más rápido, pero Perl tiene una base de muy grande de código en producción, y le es más difícil crecer, pero ya cruzo la línea de la inmortalidad.
Perl6, al que perdí de vista en el 2005, siguió su avance y logró renovar el interés en Perl5, cuya evolución reciente esta muy influenciada por el desarrollo de su sucesor. Por ejemplo: el sistema de OOP de Perl6 se implementó en Perl5 (Moose), instrucciones como el given/when, que aparece en Perl 5.10 y reemplazan al módulo Switch, vienen directamente de la sintaxis de Perl6.
Perl5 también evoluciona en la dirección del paradigma funcional, hace unos días leí la presentación Functional Pe(a)rls, dictada en el YAPC::EU::2009, así descubrí Foose: un proyecto que intenta introducir en Perl las características importantes de los lenguajes funcionales (principalmente Haskell), tales como listas flojas, mónadas y currificación, siempre cuidando la compatibilidad y la interacción con Moose.
Todos estos cambios interactúan y se retroalimentan del CPAN, la cantidad de módulos que utilizan Moose ha ido en aumento y ya Moose es una dependencia común para muchos módulos, incluyendo Catalyst.
Foose a su vez usa nuevos módulos como Devel::Declare, un módulo casi mágico que permite introducir nuevos elementos sintácticos en Perl, llevando la meta-programación en este lenguaje a un nuevo nivel de abstracción.
El excelente libro Perl Best Practices, ha sido un factor determinante en un cambio cultural de la comunidad, que ahora se enfatiza el buen estilo, la claridad del código y las interfaces, mientras se intenta dejar atrás en la historia a los JAPHs y la mala fama de lenguaje ilegible, por demás injustificada.
Haciendo alarde de su capacidad, la comunidad de Perl va mucho más allá que la de otros lenguajes, y elabora herramientas que permiten evaluar la calidad del código que se genera, así nacieron módulos como Perl::Critic y Test::Kwalitee, que evalúan las prácticas de programación y las critican permitiendo al programador elevar la calidad de su código, y como  consecuencia la mejora global de las librerías del CPAN.
En resumen, desde hace algún tiempo hay un proceso de renovación tecnológica y cultural que por definición son el Renacimiento de Perl.

3 comentarios:

  1. Hola, totalmente de acuerdo; también he publicado algo recientemente en este sentido aquí: Renacimiento

    ResponderEliminar
  2. Excelente la mención en tu artículo del IDE de Perl: Padre, a mi se me pasó, porque yo lo que uso es vim ;-)

    Sin embargo debo admitir que hay muchos programadores que no trabajan sin un IDE, tengo pendiente probarlo uno de estos días a ver que tal.

    ResponderEliminar