[Madrid-pm] Damian Conway, 2017

Joaquín Ferrero explorer en joaquinferrero.com
Jue Nov 2 14:38:38 PDT 2017


Buenas noches.

Me resulta un poco extraño que no hayamos comentado lo más espectacular y asombroso que hemos visto en Perl en lo que llevamos de año. Me refiero a la presentación de Damian Conway, tanto en YAPC NA 2017 como en TPCiA.

De hecho, la publicación de los vídeos se hizo casi al mismo tiempo (9 y 12 de agosto). Es posible que el retraso de la publicación del vídeo de la YAPC NA más de un mes lo solicitase el propio Damian.

La de la YAPC NA está editado, y las diapos se ven perfectamente; la de la TPCiA es una captura en vivo (al menos, de momento).

Las dos muestran lo mismo, pero en la de la TPCiA, Damian la amplía con algún ejemplo más.

*Keynote by Damian Conway - "Three Little Words" <https://www.youtube.com/watch?v=ob6YHpcXmTg>*
*Three Little Words <https://www.youtube.com/watch?v=nvUzH3taS6I>*


_*Resumen de la charla «Three Little Words»*_

Damian quería tener en Perl 5 las palabras clave "*class*", "*method*" y "*has*" de Perl 6, para poder declarar clases de forma sencilla, sin la pesadez de Moose.

Parece una tarea sencilla, ya que desde Perl 5.12 se pueden añadir palabras clave, al lenguaje, pero no sabía dónde se metía.

Recordando a la película "/Inception/", Damian se va introducción en una espiral de desarrollo cada vez más profunda, pero exitosa, ¡y divertida!


A lo largo de la charla hace la presentación "oficial" de los módulos siguientes:


· *Dios - Declarative Inside-Out Syntax <https://metacpan.org/release/Dios>*

«Este módulo proporciona un conjunto de palabras clave en tiempo de compilación que simplifican la declaración de clases encapsuladas usando hashes y la tecnica "inside out", asi como especificaciones completas de parametros de subrutinas».


· *Keyword::Declare - Declare new Perl keywords...via a keyword...named keyword <https://metacpan.org/pod/Keyword::Declare>*

«Este modulo implementa una nueva palabra clave en Perl: keyword, que puede usar para especificar otras nuevas palabras clave».


· *PPR - Pattern-based Perl Recognizer <https://metacpan.org/pod/PPR>*

«El módulo PPR proporciona una única expresión regular que define un conjunto de subpatrones independientes capaces de coincidir con documentos enteros de Perl, así como con un amplio rango de componentes sintácticos individuales de Perl (es decir, sentencias, expresiones, bloques de control, variables, etc.)».
(Parecía imposible, pero se trata de una única expresión regular capaz de interpretar lenguaje Perl).

Para el desarrollo de PPR, tuvo que repasar su Regexp::Debugger, para poder depurar expresiones regulares enormes, interpoladas dentro de qr() y con soporte para subreglas.


· *Perl6::Controls - Add Perl 6 control structures as Perl 5 keywords <https://metacpan.org/pod/Perl6::Controls>*

«Este módulo roba algo de las más útiles estructuras de control proporcionadas por Perl 6 y los actualiza para Perl 5, por medio del mecanismo de extensión de palabras clave».

loop, for ->, while ->, repeat, FIRST, NEXT, LAST, try/CATCH.


· *Test::Expr - Test an expression with better error messages <https://metacpan.org/pod/Test::Expr>*

«Este módulo de comprobación instala una única palabra clave: ok

Esa palabra clave evalúa la expresión y produce la típica salida de un informe de pruebas (es decir, igual que Test::Simple::ok o Test::More::ok). Excepto que, si no se le indica el argumento con la descripción, usa la propia expresión como descripción».


· *Data::Dx - Dump data structures with name and point-of-origin <https://metacpan.org/pod/Data::Dx>*

«Este módulo proporciona una envoltura sencilla sobre el módulo Data::Dump».


Además de todo esto, que es una burrada, presenta "experimentos" basados en estas herramientas:

· *Var::Javan* - (este no está en CPAN)

«Declaración de variables al estilo Java (var, let, const, sin sigilos, y con tipos».


· *Var::Tracking* - (tampoco está en CPAN)

«Define la palabra clave 'your', que permite hacer seguimiento de los cambios en los contenidos de las variables en tiempo de ejecución».


  · *Multilingual::Code* - (tampoco está en CPAN)

«Facilita escribir en otros lenguajes, dentro de Perl (C, Python, etc.)».

En la TPCiA, Damian muestra además un sistema para refactorizar código, creo que usando alguna de sus macros en Vim.


En resumen... ¡demasiado para una sola charla! Pero muy, muy, muy interesante.

-- 
Joaquín Ferrero


Más información sobre la lista de distribución Madrid-pm