Buenas tardes.
Solo unas líneas para comentar 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 2017 (TPC in Amsterdam).
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.
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"
"Three Little Words" - Damian Conway
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 y 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
«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 técnica "inside out", así como especificaciones completas de parámetros de subrutinas».
· Keyword::Declare - Declare new Perl keywords...via a keyword...named keyword
«Este módulo implementa una nueva palabra clave en Perl: keyword, que se puede usar para especificar otras nuevas palabras clave».
· PPR - Pattern-based Perl Recognizer
«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
«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
«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
«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.