Noticias Programación

Guido y Microsoft quieren hacer Python x2 más rápido

Una presentación del padre de Python o su BDFL como lo conocíamos, Guido van Rossum, anunció que Microsoft lo apoyó para crear una Python más rápida.

Actualmente es el Python Language Summit, aunque la mayoría de las contribuciones son interesantes, tratan de características del lenguaje muy específicas. La contribución de Guido es más amplia.

Python es un lenguaje de alto nivel. En muchos sentidos, ofrece al programador más abstracciones que el lenguaje medio de alto nivel. Esto es genial porque puede escribir instrucciones y dejar que el compilador decida cómo implementar cosas que de otra manera tendría que explicar en detalle. Por ejemplo, en la mayoría de los idiomas para intercambiar dos valores, tendría que escribir algo como:

temp = a
a = b
b = temp

en Python puedes simplemente escribir:

a, b = b, a

y deje que el compilador descubra cómo hacer el intercambio. Pero esto significa que el compilador tiene que asignar una variable temporal y deshacerse de ella. Este no es un ejemplo particularmente sofisticado o excesivo de lo que está sucediendo, pero ilustra la idea de que cuanto menos se hace, más tiene que hacer el compilador. En los primeros días de la informática, el argumento era que los compiladores podían hacerse más inteligentes y de todos modos no importaba porque el hardware se estaba volviendo cada vez más rápido, por lo que las ineficiencias en los lenguajes de alto nivel se volverían cada vez más irrelevantes. Sin embargo, las cosas no salieron tan bien. El hardware dejó de ser mucho más rápido hace unos años y recurrió a un paralelismo creciente para utilizar el área de chip adicional y nuestros algoritmos se volvieron cada vez más exigentes.

La velocidad sigue importando hoy.

A Guido parece importarle que Python no sea tan rápido como Rust o C. Puedo testificar, más recientemente con mi experiencia con Raspberry Pi, que C es hasta 100 veces más rápido que Python y, a menudo, esto es importante. Hay implementaciones de Python que mejoran la velocidad del lenguaje, Pyston por ejemplo, pero el compilador estándar de oro es CPython y esto es lo que Guido pretende mejorar.

La historia parece ser que Guido notó «The Shannon Plan», un repositorio de GitHub de Mark Shannon que proponía mejorar la velocidad de Python de 1,5 veces al año a 5 veces en 4 años, pero estaba corto de fondos. El resto se puede contar mediante una diapositiva de la presentación:

pythonfast2

Publicidad:

¡Bien hecho Microsoft!

El equipo incluye a Mark Shannon, Guido y Eric Snow, un ingeniero de software sénior en Microsoft que también es miembro de la Fundación Python y ha trabajado en el rendimiento de subprocesos múltiples.

El problema es que una vez que tienes un proyecto tienes que decir cómo vas a alcanzar tu ambicioso objetivo. La idea es mejorar la velocidad de CPython en un factor de 2 con Python 3.11 sin romper la compatibilidad ABI o API y sin bloquear o ralentizar los casos extremos. Y todo ello con un código de fácil mantenimiento.

Con estas restricciones, las únicas cosas que se pueden cambiar son el código de bytes, el marco de pila y las partes internas de los objetos privados. El gran objetivo parece ser el intérprete de código de bytes más una lista de optimizaciones. Con todas estas dificultades, no es de extrañar que el equipo exprese la opinión de que puede que no lleguen a x2.

Curiosamente, especulan que más allá de 3.11 puede haber generación de código de máquina en el futuro. Personalmente, no estoy seguro de por qué esto no está en su presente. Después de muchos desafíos con el compilador GCC C para mejorar su código. Debo admitir que un compilador moderno optimiza el programador de código de máquina. Es una opinión pasada de moda, pero creo que también está en el futuro de Python.

¿Es este proyecto necesario?

Probablemente. Python tiene excelentes instalaciones, mejores que la mayoría de los lenguajes, para interactuar con C, y muchos proyectos de Python logran su velocidad utilizando módulos C para las partes críticas para la velocidad. Aun así, sería bueno hacer todo en Python y probablemente haría de Python la opción para la mayoría de las aplicaciones técnicas, solidificando su estado de lenguaje # 1.

mspythonpic

Mike James es el autor de Python del programador: todo es un objeto publicado por I / O Press como parte de TecnoPasion Library. Subtitulado «Algo completamente diferente», este libro es para aquellos que quieren comprender la lógica más profunda en el enfoque de Python 3 para las clases y los objetos.

Publicidad:

También puede gustarte...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *