Schedule

Pablo Galindo Salgado

Core

Track 3

06 October 2018, 18:00 - 18:25

¡Oh vosotros los que entráis, abandonad toda esperanza!

Como programadores de Python, estamos acostumbrados a usar nuestro lenguaje favorito continuamente pero alguna vez que otra pasa por nuestra cabeza la duda de cómo funciona todo esto. ¿Cómo está implementado un lenguaje de programación? ¿Cómo sabe Python si lo que escribo es correcto o no? ¿Cómo se transforma y ejecuta el código que escribimos?

El objetivo de esta charla es aprender todo lo posible acerca de sintaxis, gramática, árboles sintácticos abstractos, como un lenguaje como Python funciona y cómo CPython (la implementación por defecto del intérprete) en particular está implementado. Para que la sesión no sea simplemente una serie de diatribas teóricas, utilizaremos la excusa de modificar, retorcer y extender la gramática de Python como hilo conductor para entender cómo todas las piezas encajan y para aprender cómo funcionan todas las técnicas avanzadas de análisis y modificación de código. Para ello empezaremos hablando de cómo modificar código de Python modificando su árbol sintáctico abstracto y veremos algunos ejemplos de librerías (pytest, 2to3…) que utilizan esta técnica. Después veremos como extender la gramática de Python “informalmente” utilizando un códec personalizado y qué aplicaciones podría tener esto. Finalmente hablaremos de cómo modificar realmente la gramática de Python creando nuestro propio intérprete modificado en caso de que algún día queramos implementar nuestro propio lenguage o modificar el propio Python.

Tras terminar la charla (¡para aquellos que sobrevivan a los nueve circulos!) ganaremos conocimiento de como funciona Python y, por extensión, otros lenguajes de programación además de tener un montón de malas ideas inmantenibles en mente para la próxima vez que queramos asustar a nuestros compañeros programadores.