11 de julio de 2018

PyCon 2018

Del 9 al 17 de mayo se llevó a cabo PyCon USA 2018 en la ciudad de Cleveland, Ohio, en los Estados Unidos.


Este evento reúne a más de tres millares de personas que forman parte de la comunidad de usuarios y entusiastas del lenguaje de programación Python. Programadores, científicos, educadores y aficionados se dieron cita para aprender y discutir sobre técnicas, herramientas y prácticas relacionadas con el ecosistema de Python, así como para conocer y convivir con otras personas con intereses afines.

Con Guido van Rossum (creador de Python).

En esta entrada del blog comentaré sobre los aspectos que me parecieron más relevantes de este gran evento.

La importancia de las plataformas

La primera conferencia magistral de PyCon 2018 corrió a cargo de Dan Callahan. Dan tiene seis años trabajando en la fundación Mozilla, la cual es una organización sin fines de lucro que encabeza el desarrollo de diversos productos de software libre para la web, siendo Firefox el más conocido.

Dan Callahan en su conferencia magistral
titulada “La importancia de las plataformas”.

Dan comenzó su presentación hablando de su experiencia con el uso de tecnología cuando era niño y adolescente. En la década de los ochenta y noventa aprendió a programar la computadora IBM PC Junior y la calculadora gráfica TI-82. Ambos dispositivos tenían en común que se programaban a través del lenguaje BASIC. En aquel entonces él no tuvo que decidir qué lenguaje de programación utilizar, ya que la plataforma estableció de antemano el único lenguaje disponible.

Lo anterior nos lleva la siguiente conclusión: la plataforma dicta la herramienta. Y es por eso que la plataforma es muy importante si tenemos el interés en promover alguna herramienta en particular (Python, por ejemplo).


La siguiente imagen muestra las plataformas de cómputo disponibles desde tiempo atrás, así como las que están surgiendo en épocas más recientes y las que podríamos ver en un futuro. Todas estas plataformas tienen una cosa en común: están conectadas a la web.


Lo anterior significa que la plataforma computacional más generalizada hoy y en años venideros es la web. Dado que la plataforma dicta la herramienta, ¿cuál es la herramienta (específicamente el lenguaje de programación) disponible para la web? (alerta de spoiler: lamentablemente no es Python). Para acceder a la web necesitamos usar un programa conocido como “agente web”, típicamente un navegador (por ejemplo Chrome o Firefox). Hay miles de millones de dispositivos en el mundo (desde teléfonos celulares hasta supercomputadoras) con navegadores web que soportan un solo lenguaje de programación: JavaScript.

Entonces, ¿no se puede usar Python para programar la web? Claro que se puede, pero es importante realizar algunas precisiones. La web funciona bajo una arquitectura de software conocida como “cliente-servidor”. Esto quiere decir que un cliente realiza peticiones a otro programa, el servidor, quien le da respuesta. Del lado del servidor un programa puede estar escrito prácticamente en cualquier lenguaje, pero del lado cliente, como ya se mencionó, JavaScript es la única opción soportada casi de manera universal. Así pues, por ejemplo, aunque podemos correr código de Python dentro de un notebook (cuaderno) de Jupyter directamente sobre un navegador, el hecho es que dicho código realmente se ejecuta en un servidor que bien puede estar corriendo a su vez de manera local sobre la misma computadora.

Un cuaderno de Jupyter con
código de Python dentro
del navegador Firefox.

Para que Python pueda correr directamente en un navegador se requiere que éste tenga un intérprete de Python. Aunque ya se han hecho algunos intentos en este sentido (por ejemplo el proyecto Skulpt, el cual es un intérprete de Python escrito en JavaScript), Dan Callahan sugirió que el camino más viable es a través de un nuevo estándar de web llamado WebAssembly. Este estándar define un formato de código binario portable (conocido también como bytecode) que es ejecutado de manera íntegra por el navegador de manera más rápida que el código de JavaScript. La versión 1.0 de WebAssembly ya está incorporada en los cuatro principales navegadores web (Firefox, Chrome, Safari y Edge). Así mismo, ya existen también compiladores de C/C++ que producen código objeto de WebAssembly.

Lo anterior da lugar a que utilicemos la web como si fuera una plataforma computacional “convencional”. En teoría, ya se debería poder compilar el código fuente del intérprete de Python (CPython), que está escrito en lenguaje C, para que corra sobre la web. En la práctica aún hay ciertos problemas que no se pueden resolver fácilmente, ya que WebAssembly funciona con las mismas restricciones del entorno aislado (sandbox) que tiene JavaScript en el navegador (por ejemplo, no se pueden leer y/o escribir archivos arbitrarios).


Dan Callahan considera que debemos buscar una manera de combinar los mejores aspectos de la web con los elementos más sobresalientes que ofrece Python. La pregunta que lanza al público es: ¿cómo podemos llevar Python a la web en una manera en que le haga sentido a la web? Dan desconoce la respuesta, pero considera que tenemos todas las piezas que hacen falta para resolver este problema. Estamos frente a un territorio desconocido esperando a ser explorado. Depende de la comunidad de Python encontrar la solución a este formidable reto.

PyCon Charlas 

Por primera vez en PyCon USA se destinó un track completo dedicado exclusivamente a una serie de pláticas en idioma español. Esto ocurrió el día viernes 11 de mayo. PyCon Charlas fue el primer producto del programa Hatchery, el cual busca apoyar ideas innovadoras para PyCon y su comunidad.


Así fue como se justificó este nuevo evento:
Un porcentaje significativo de la población estadounidense, más del 12%, habla español y las comunidades hispanohablantes de Python en América Latina y Europa están creciendo rápidamente con una gran aceptación en conferencias y reuniones. PyCon Charlas dará visibilidad a los pythonistas hispanohablantes dándoles un espacio en la PyCon más grande del mundo para dar y recibir charlas en español.
En total hubo ocho presentaciones en esta avenida, con ponentes provenientes de Paraguay, México, Nicaragua, Colombia, Estados Unidos y Brasil. Se trataron temas muy diversos, desde ciencia de datos hasta internet de las cosas.

En las PyCon Charlas. De izquierda a derecha: 
Camila Remolina (presentadora en las PyCon Charlas),
Guido van Rossum (dictador benevolente de por vida),
Naomi Ceder (chair de las PyCon Charlas) y 

Mario Corchero 
(chair de las PyCon Charlas).

Motivando a niños de escasos recursos

Una conferencia magistral que me pareció muy conmovedora fue la que impartió Qumisha Goss. Ella trabaja en la Biblioteca Pública de Detroit y se especializa en instrucción tecnológica. Por su propia cuenta aprendió a programar en Python y está certificada como educadora de Raspberry Pi.

Qumisha Goss en su conferencia
magistral titulada “La gente y Python”.

Qumisha lleva más de tres años encargada de un proyecto en su biblioteca que busca enseñar razonamiento computacional a niños desde 6 y hasta 17 años utilizando robots y programación con Python. Tristemente, muchos de sus alumnos provienen de familias muy pobres. Aún así, hay personas que le llegan a cuestionar sobre la falta de diversidad en su salón de clase. Pero ella responde afirmando que la “diversidad” debe tomar un segundo plano cuando se tienen alumnos que pasan hambre en sus casas o que a los nueve años aún no han aprendido a leer. Los resultados de la labor de Qumisha son realmente admirables e inspiradores.

Conclusión 

Este año PyCon nos ofreció nuevamente una gran oportunidad para ponernos al corriente en todo lo relacionado con el lenguaje Python y su vibrante comunidad. Los videos (en inglés) de las conferencias y talleres están disponibles en el canal de PyCon 2018 de YouTube.