¿Por qué el futuro no es para Python?

Aunque, por supuesto, este lenguaje de programación estará en demanda por muchos años más.



La comunidad de programadores tardó décadas en apreciar Python. Desde principios de la década de 2010, ha estado en auge, y finalmente supera la popularidad de C ++, C #, Java y JavaScript.

¿Pero cuánto tiempo continuará esta tendencia? ¿Cuándo será eventualmente reemplazado Python por otros lenguajes, y por qué ocurrirá esto inevitablemente?
Software EDISON - desarrollo web
La traducción fue apoyada por EDISON.

Estamos desarrollando aplicaciones en Python , además de realizar pruebas de software .

¡Amamos y usamos Python ampliamente! ;-)

¿Qué hace que Python sea popular hoy?


StackOverflow puede juzgar la popularidad de Python si observa la cantidad de etiquetas en las publicaciones. Dada la escala de StackOverflow, este es un indicador bastante objetivo de la popularidad del lenguaje.


Mencione en StackOverflow de algunos lenguajes de programación populares: la dinámica de los cambios a lo largo de los años. El desempeño de Python está creciendo constantemente, mientras que los competidores están disminuyendo.

Si bien R ha estado en la meseta en los últimos años, y muchos otros idiomas están disminuyendo constantemente, el crecimiento de Python parece imparable. Casi el 14% de todas las preguntas de StackOverflow están etiquetadas como "python", y esta tendencia solo está creciendo. Y hay varias razones para esto.

Tiempo probado


Python ha existido desde los años noventa. No es solo que tuvo mucho tiempo para crecer. Y también que se ha formado una comunidad grande y solidaria.

Por lo tanto, si encuentra algún problema al escribir el código de Python, existe una alta probabilidad de que pueda resolverlo rápidamente utilizando la Búsqueda de Google. Solo porque alguien ya ha encontrado un problema similar y escribió algo útil al respecto.

Amigable para principiantes


Y el punto no es solo que el lenguaje ha existido durante varias décadas, para lo cual los programadores han escrito varios libros de texto brillantes. La sintaxis de Python también es muy legible.

Primero, no hay necesidad de especificar un tipo de datos. Simplemente declara una variable: desde el contexto, Python comprenderá si es un número entero, un valor de punto flotante, un valor booleano u otra cosa. Esta es una gran ayuda para principiantes. Si alguna vez ha tenido que programar en C ++, entonces sabe lo triste que es cuando un programa no se compila solo porque en algún lugar, en lugar de un número de coma flotante, se sustituye un número entero.

Y si alguna vez ha tenido que comparar código Python y C ++, entonces sabe cuánto se ve Python más comprensible. A pesar de que C ++ está diseñado teniendo en cuenta el idioma inglés, esta es una lectura muy difícil en comparación con el código Python.

Universal


Python ha existido durante mucho tiempo, durante el cual los desarrolladores han creado muchas bibliotecas para todas las ocasiones. Hoy en día, para casi todo, puede encontrar la herramienta requerida.

¿Muchos números, vectores y matrices? NumPy al rescate.
Cálculos de ingeniería técnica? Usa SciPy .
Análisis de grandes datos? Los pandas lo resolverán.
¿Aprendizaje automático, redes neuronales, IA? ¿Por qué no Scikit-Learn ?

No importa en qué tarea computacional se encuentre, existe la posibilidad de que haya un paquete de Python para ello. Esto permite que el lenguaje se mantenga en tendencia, lo que se nota por la creciente popularidad del aprendizaje automático en los últimos años.

Defectos de Python, y ¿pueden enterrar el lenguaje?


Inspirado por el estado actual de las cosas, uno puede imaginar que Python es un serio y a largo plazo. Pero, como cualquier tecnología, Python tiene sus debilidades. Examinemos en orden las deficiencias más importantes y evalúemos si son fatales o no.

Velocidad


Python es lento. No, bueno, muy lento. En promedio, una tarea se ejecuta entre 2 y 10 veces más que en otros idiomas.

Hay razones para esto. Primero, escritura dinámica: recuerde, dijimos anteriormente que es muy conveniente cuando no necesita especificar tipos de datos, como en otros idiomas. La otra cara de la moneda es la necesidad de usar una gran cantidad de memoria, porque el programa necesita reservar suficiente espacio para cada variable para que funcione de todos modos. Y la memoria "con un margen" conduce a un mayor gasto de tiempo computacional.

En segundo lugar, Python solo puede realizar una tarea a la vez. Esto también es una consecuencia de los tipos de datos flexibles: Python debe asegurarse de que solo un tipo de datos corresponda a cada variable, y los procesos paralelos pueden interferir con esto.

Pero, en general, la velocidad no es crítica. Las computadoras y servidores productivos son tan accesibles que solo podemos hablar de fracciones de segundo. Al usuario final no le importa si su aplicación se carga en 0.001 o en 0.01 segundos.

Área de visibilidad


Python fue inicialmente limitado dinámicamente. Esto básicamente significa que para evaluar la expresión, el compilador primero busca el bloque actual y luego todas las funciones de llamada en secuencia.

El problema con el alcance dinámico es que cada expresión debe verificarse en todos los contextos posibles, lo cual es tedioso. Es por eso que la mayoría de los lenguajes de programación modernos usan un alcance estático.

Python intentó pasar al ámbito estático, pero falló. Por lo general, los ámbitos internos, como las funciones dentro de las funciones, pueden ver y cambiar ámbitos externos. En Python, las regiones internas solo pueden ver regiones externas, pero no pueden cambiarlas. Esto lleva a mucha confusión.

Funciones lambda


A pesar de toda la flexibilidad de Python, el uso de lambda es bastante limitado. Solo pueden ser expresiones en Python, pero no operadores.

Las declaraciones variables y los operadores, por otro lado, siempre son operadores. Esto significa que las lambdas no se pueden usar para ellos.

Esta distinción entre expresiones y declaraciones es bastante arbitraria y no ocurre en otros idiomas.


La sangría estricta hace que el código sea más legible, pero su inevitabilidad perjudica el soporte.

Espacios y pestañas


En Python, los espacios y las pestañas se usan para indicar diferentes niveles de código. Esto lo hace visualmente atractivo e intuitivo.

En otros lenguajes, como C ++, se utilizan llaves con punto y coma para las estructuras anidadas. Aunque esto puede no ser tan hermoso e inconveniente para los principiantes, hace que el código sea más conveniente de mantener. Con el crecimiento del proyecto, la importancia de este enfoque también aumenta.

Nuevos lenguajes (relativamente) como Haskell resuelven este problema: dependen de espacios, pero ofrecen una sintaxis alternativa para aquellos que quieren prescindir de ellos.

Desarrollo móvil


Como hay un cambio masivo de computadoras de escritorio a teléfonos inteligentes, es obvio que existe una creciente necesidad de idiomas confiables para crear software móvil.

Pero las aplicaciones móviles en Python aproximadamente dos veces y se calcularon mal. Esto no significa que esto no sea posible en absoluto; para esto hay un paquete llamado Kivy.

Python no fue creado para dispositivos móviles. Incluso si puede dar resultados aceptables para resolver problemas básicos en esta área, es mejor usar un lenguaje adaptado para el desarrollo de aplicaciones móviles. Algunas plataformas de programación móvil de uso común incluyen React Native, Flutter, Iconic y Cordova.

Por supuesto, las computadoras portátiles y de escritorio se seguirán utilizando durante muchos años. Sin embargo, los dispositivos móviles han superado durante mucho tiempo el tráfico de escritorio. Es seguro decir que aprender Python no es suficiente para ser considerado un desarrollador experimentado y completo .

Errores de tiempo de ejecución


Primero, compilación por separado, luego ejecución, en algunos otros lenguajes, pero no en Python. En cambio, el código se compila cada vez que se ejecuta, por lo que cualquier error en el código aparece durante la ejecución del programa. Esto conduce a un rendimiento reducido, pérdida innecesaria de tiempo y la necesidad de una gran cantidad de pruebas. ¡Más pruebas al dios de las pruebas!

Esto es excelente para principiantes, ya que las pruebas por sí solas enseñan mucho. Pero para los desarrolladores experimentados, tener que depurar un programa complejo en Python los hace incorrectos. Esta falta de rendimiento es el factor más grave que indica que Python pasará en el futuro previsible.

¿Qué podría reemplazar a Python en el futuro? Y cuándo


Varios nuevos competidores aparecieron en el mercado de lenguajes de programación:

  • Rust , Python — . . StackOverflow Insights, .
  • Go , Python. , . : Go — .
  • Julia es un lenguaje muy nuevo que compite directamente con Python. Llena el vacío en los cálculos técnicos a gran escala: por lo general, era posible usar Python o Matlab, realizando parte de las tareas (a veces una parte muy significativa) usando bibliotecas C ++. Ahora, en lugar de hacer malabares con dos idiomas, simplemente puede usar Julia.

Aunque hay otros idiomas en el mercado, Rust, Go y Julia reparan las debilidades de Python. Todos estos lenguajes son excelentes en tecnologías futuras, especialmente en inteligencia artificial. Aunque su cuota de mercado sigue siendo pequeña (lo que se refleja en la cantidad de etiquetas StackOverflow), la tendencia para cada una de ellas es obvia: hacia arriba y solo hacia arriba.


Mención en StackOverflow para Go / Rust / Julia: dinámica de los cambios a lo largo de los años. Los indicadores siguen siendo modestos, pero estos idiomas tienen una tendencia alcista constante.

Dada la popularidad generalizada de Python hoy en día, tomará media década, tal vez incluso un todo, para que cualquiera de estos nuevos lenguajes lo reemplace.

Es difícil decir qué idioma será: Rust, Go, Julia o algún otro idioma nuevo del futuro. Pero dados los problemas de rendimiento que son fundamentales para Python debido a su arquitectura, lo inevitable sucederá tarde o temprano.

All Articles