Diez primaveras a posteriori de la entrada de PEP 484, analizamos el estado contemporáneo del sistema de tipos Python y las herramientas que utilizan los desarrolladores.
Este verano, JetBrains, Meta y Microsoft colaboraron para realizar una investigación exhaustiva sobre el estado de la escritura en Python*. La investigación tenía como objetivo comprender cómo los desarrolladores de la comunidad de código despejado utilizan las sugerencias de tipo, los desafíos que enfrentan y las herramientas en las que confían. Más de 1000 personas respondieron la investigación y estamos encantados de compartir los resultados. A pesar del sentimiento positivo de escritura, recibimos comentarios fantásticos (aunque a veces un poco mordaces) sobre el sistema de escritura. Brindaremos un compendio de los hallazgos, incluidas estadísticas de uso, sentimiento universal y conclusiones que pueden mejorar las herramientas para desarrolladores de Python.
Hallazgos generales
- El 88% de los encuestados «Siempre» o «A menudo» utilizan tipos en su código Python.
- Las herramientas IDE, la documentación y la detección de errores son impulsores de la incorporación prohijamiento de tipos en las respuestas de las encuestas.
- La usabilidad de los tipos y la capacidad de expresar patrones complejos siguen siendo desafíos que dejan parte del código sin controlar.
- La latencia en las herramientas y la equivocación de tipos en las bibliotecas populares están limitando la eficiencia de los verificadores de tipos.
- La inconsistencia en las implementaciones de demostración de tipos y la escasa capacidad de descubrimiento de la documentación crean fricciones al incorporar tipos a un esquema y despabilarse ayuda al usar las herramientas.
Metodología de la investigación
Es probable que una investigación sobre tipos atraiga a muchos entusiastas de la estenotipia, por lo que no consideramos que sea una visión imparcial ni representativa de todos los miembros de la comunidad. Hicimos todo lo posible para distribuirlo a la veterano cantidad de desarrolladores posible y buscamos preguntas fáciles de entender para todos los niveles. Creamos preguntas que brindarían una imagen de los perfiles de los desarrolladores, las herramientas y el sentimiento universal en dirección a Python escrito. Más allá de las métricas, queríamos tener una idea del estado de talante contemporáneo y agradecemos los comentarios detallados y sinceros.
Cohortes de desarrolladores
Como lengua de propósito universal, no fue sorprendente ver tipos de Python utilizados en muchos campos. Scripting/automatización, progreso web, exploración de datos, AI/ML, devOps y enseñanza tuvieron una gran representación. Un hallazgo sorprendente fue el valía que los tipos de Python están demostrando fuera de los entornos colaborativos. Una parte importante de los encuestados utiliza tipos de Python en proyectos personales (el 66% de los encuestados que solo usan Python personalmente usan tipos «siempre» o «a menudo», en comparación con el 78% de los desarrolladores que solo son «profesionales») y sin CI (el 29,6% de los encuestados no No tiene demostración de tipos en CI, use los tipos «Siempre» o «A menudo»).
IDE y verificadores de tipos
Cuando se proxenetismo de entornos de progreso, Visual Studio (VS) Code surgió como la opción más popular. La configuración más popular de IDE plus type checker fue VS Code con Mypy seguida de PyCharm con Mypy. Mypy sigue siendo el verificador de tipos más popular: el 67 % de los encuestados lo utiliza y el 38 % utiliza Pyright (el 24 % utiliza uno y otro). Emacs o NeoVIM igualmente tienen una sólida saco de usuarios con un 11% combinado. La preferencia de la comunidad por las herramientas IDE y de demostración de tipos sigue siendo harto variada. Si acertadamente no es un verificador de tipo asombrado, el 62% de los desarrolladores usa Pydantic y el 14% solo use Pydantic, que muestra el uso del sistema de tipos extendiéndose a casos de uso en tiempo de ejecución.
lo que la masa ama
A pesar de los desafíos, los desarrolladores aprecian el autocompletado mejorado y la claridad del código mejorada que brindan las sugerencias de escritura. «Mejor soporte IDE» fue la característica más útil (59%), seguida de «Prevención de errores» (49,8%) y «Documentación» (49,2%). Valoran la capacidad de detectar errores potenciales de guisa temprana y la facilidad de refactorizar el código. La naturaleza opcional de la estenotipia permite una prohijamiento continuo, lo que muchos consideran favorecedor.
“Encuentra errores reales. A menudo indica fallas de diseño cuando escribir es difícil o inasequible”.
Problemas comunes con la documentación y la usabilidad del sistema de tipos
Les dimos a los desarrolladores la oportunidad de saludar comentarios de forma emancipado y vimos que surgían repetidamente varios problemas con el sistema de tipos contemporáneo. Las preocupaciones más comunes son la complejidad del sistema de tipos para expresar características dinámicas (29 respuestas), el sosegado rendimiento de los verificadores de tipos como Mypy (22 respuestas) y las inconsistencias entre diferentes verificadores de tipos (21 respuestas). La equivocación de claridad en la documentación, especialmente para las construcciones avanzadas, igualmente fue un punto débil (10 respuestas).
«Numerosas bibliotecas carecen de anotaciones de cualquier tipo, lo que dificulta el exploración del código y puede provocar errores de tiempo de ejecución».
«Los obstáculos que a veces hay que aventajar para expresar al menos de forma poco correcta las características dinámicas del tiempo de ejecución, y aun así, a menudo no se cubren correctamente».
Por qué los desarrolladores no usan tipos
Entre los encuestados, 321 (29%) de los desarrolladores citaron las siguientes razones para no utilizar tipos en su código Python. La razón principal para no utilizar tipos es «No es necesario para mis proyectos», que representó el 11% del total de respuestas a la investigación. Curiosamente, entre los 321 desarrolladores que citaron este motivo, la mayoría (60%) todavía informó que usaba los tipos «Siempre» o «A menudo». Esto está 28 puntos por debajo del promedio universal de la investigación, pero sigue siendo una proporción sustancial.
Recomendaciones para mantenedores de lengua Python y autores de herramientas
Los desarrolladores piden una mejor estandarización y coherencia entre las herramientas. Mejorar el soporte para patrones dinámicos y complejos, así como mejorar la demostración de tipos en tiempo de ejecución, son áreas esencia en las que se debe reflexionar más a fondo. Un mejor rendimiento del verificador de tipos fue un problema global citado por los desarrolladores de todas las cohortes. Más allá de las características y el rendimiento, la accesibilidad y la capacidad de descubrimiento de la documentación de Python se mencionaron en numerosas ocasiones. Los documentos de estenotipia de Python 3 eran la forma más popular para que las personas aprendieran sobre los tipos u obtuvieran ayuda con problemas. Hubo comentarios constantes que pedían una mejor documentación, particularmente para las funciones de escritura avanzadas que incluían ejemplos. La “equivocación de aprecio” fue la segunda razón más importante (8% de todas las respuestas) por la que las personas no usan tipos. Existe la oportunidad de mejorar la capacidad de descubrimiento y utilización de la documentación.
¡Gracias! ¡Hagamos esto de nuevo!
Gracias a todos los que ayudaron a crear y compartir la investigación. Muchas gracias a todos los que completaron la investigación y brindaron comentarios honestos y detallados. ¡Tuvimos más respuestas de las esperadas! Es confortante ver tanta billete de la comunidad y esperamos incorporar los comentarios en las discusiones sobre el futuro de las herramientas y la demostración de tipos de Python.
Esperamos realizar la investigación nuevamente en el verano de 2025 para ver cómo cambia el sentimiento y crece la prohijamiento de herramientas. Tenemos algunas ideas sobre cómo mejorar la investigación para el próximo año. Queremos asegurarnos de que se escuchen muchas opiniones en toda la comunidad y de que podamos vislumbrar el sentimiento de estenotipia de personas con diferentes niveles de experiencia y entusiasmo por escribir.
¿Qué le gustaría ver en la investigación el próximo año? ¿Cómo puede transformarse el sistema de tipos Python para satisfacer sus deyección? Únase a la conversación en discurso. tu igualmente puedes explore los datos usted mismo a través de esta utensilio y comente a continuación con sus ideas.
*Basado en una investigación en ristra realizada entre 1083 personas distribuidas a través de X, LinkedIn, Reddit y otras plataformas de redes sociales dirigidas a desarrolladores de Python. La investigación fue realizada por Meta, Microsoft y JetBrains. Los datos se recopilaron entre el 29/07/2024 y el 08/10/2024.