Por qué Python no es el lenguaje de programación del futuro
junio 20, 2021
La comunidad de desarrolladores tardó algunas décadas en apreciar Python. Pero desde principios de la década de 2010, ha estado en auge y, finalmente, superó en popularidad a C, C #, Java y JavaScript.
Pero, ¿hasta cuándo continuará esta tendencia? ¿Cuándo finalmente Python será reemplazado por otros lenguajes y por qué?
Poner una fecha de vencimiento exacta en Python sería tanta especulación que bien podría sonar a ciencia ficción. En cambio, evaluaré las virtudes que hacen que Python sea más popular en este momento y los puntos débiles que lo degradarán en el futuro.
¿Qué hace que Python sea popular en este momento?
El éxito de Python se refleja en las tendencias de Stack Overflow, que miden la cantidad de etiquetas en las publicaciones de la plataforma. Teniendo en cuenta el tamaño de StackOverflow, este es un indicador bastante bueno de cuán popular es el lenguaje.

Si bien R se ha estabilizado en los últimos años y muchos otros lenguajes están en constante declive, el crecimiento de Python parece imparable. Casi el 14% de todas las preguntas de StackOverflow están etiquetadas como «python», y la tendencia va en aumento. Y hay varias razones para ello.
Es viejo
Python existe desde los años 90. Eso no solo significa que ha tenido mucho tiempo para crecer. También ha adquirido una comunidad importante y unida.
Entonces, si tiene algún problema mientras codifica en Python, es probable que pueda solucionarlo con solo una búsqueda en Google. Simplemente porque alguien ya habrá encontrado su problema y habrá escrito algo útil al respecto.
Es amigable para principiantes
No es solo el hecho de que ha existido durante décadas, lo que les da a los programadores tiempo para crear tutoriales brillantes. Más que eso, la sintaxis de Python es muy legible por humanos.
Para comenzar, no es necesario especificar el tipo de datos. Simplemente declara una variable; Python comprenderá del contexto si es un número entero, flotante, booleano o lo que sea. Esta es una gran ventaja para los principiantes. Si alguna vez ha tenido que programar en C ++, sabe lo frustrante que es que su programa no se compile porque haya cambiado un flotante por un número entero.
Y si alguna vez ha tenido que leer el código Python y el código C ++ uno al lado del otro, sabrá lo comprensible que es Python. Aunque C ++ se diseñó pensando en el inglés, es una lectura bastante irregular en comparación con el código Python.
Es versátil
Dado que Python ha existido durante tanto tiempo, los desarrolladores han creado un paquete para cada uso. En estos días puedes encontrar un paquete para casi cualquier cosa.
¿Quiere morder números, vectores y matrices? NumPy es tu chico.
¿Quiere hacer cálculos para tecnología e ingeniería? Utilice SciPy.
¿Quiere iniciarse en la manipulación y el análisis de datos? Prueba los Pandas.
¿Quieres iniciarte en la Inteligencia Artificial? ¿Por qué no utilizar Scikit-Learn?
Cualquiera que sea la tarea computacional que intente realizar, es probable que haya un paquete de Python para ello. Esto permite a Python mantenerse al tanto de los desarrollos recientes, como lo demuestra el aumento del aprendizaje automático en los últimos años.
Las desventajas de Python y si serán fatales
Con base en las elaboraciones anteriores, puedes imaginar que Python se mantendrá al tanto de la mierda durante siglos. Pero como cualquier tecnología, Python tiene sus debilidades. Revisaré los defectos más importantes, uno por uno, y evaluaré si son fatales o no.
Velocidad
Python es lento. Realmente lento. En promedio, necesitará entre 2 y 10 veces más para completar una tarea con Python que con cualquier otro lenguaje.
Hay varias razones para esto. Uno de ellos es que se escribe dinámicamente; recuerde que no es necesario especificar tipos de datos como en otros idiomas. Esto significa que se debe usar mucha memoria, porque el programa debe reservar suficiente espacio para cada variable para que funcione en cualquier caso. Y una gran cantidad de uso de memoria se traduce en mucho tiempo de computación.
Otra razón es que Python solo puede realizar una tarea a la vez. Esto es una consecuencia de los tipos de datos flexibles: Python necesita asegurarse de que cada variable tenga solo un tipo de datos, y los procesos paralelos podrían estropearlo.
En comparación, su navegador web promedio puede ejecutar una docena de subprocesos diferentes a la vez. Y también hay otras teorías.
Pero al final, ninguno de los problemas de velocidad importa. Las computadoras y los servidores se han vuelto tan baratos que estamos hablando de fracciones de segundo. Y al usuario final realmente no le importa si su aplicación se carga en 0.001 o 0.01 segundos.
Alcance
Originalmente, Python tenía un alcance dinámico. Esto esencialmente significa que, para evaluar una expresión, un compilador busca primero el bloque actual y luego sucesivamente todas las funciones de llamada.
El problema con el alcance dinámico es que cada expresión debe probarse en todos los contextos posibles, lo cual es tedioso. Esta es la razón por la que la mayoría de los lenguajes de programación modernos usan un alcance estático.
Python intentó cambiar al alcance estático, pero se equivocó. Por lo general, los ámbitos internos, por ejemplo, funciones dentro de funciones, podrían ver y modificar ámbitos externos. En Python, los ámbitos internos solo pueden ver los ámbitos externos, pero no modificarlos. Esto genera mucha confusión.
Lambda
A pesar de toda la flexibilidad de Python, el uso de Lambdas es bastante restrictivo. Las lambdas solo pueden ser expresiones en Python, no declaraciones.
Por otro lado, las declaraciones e instrucciones de variables son siempre instrucciones. Esto significa que no se pueden utilizar Lambdas para ellos.
Esta distinción entre expresiones y declaraciones es bastante arbitraria y no ocurre en otros lenguajes.

Espacios
En Python, usa espacios y sangrías para indicar diferentes niveles de código. Esto lo hace ópticamente atractivo e intuitivo de entender.
Otros lenguajes, como C ++, se basan más en llaves y punto y coma. Si bien esto puede no ser visualmente atractivo y amigable para principiantes, hace que el código sea mucho más fácil de administrar. Para proyectos grandes, esto es mucho más útil.
Los lenguajes más nuevos como Haskell resuelven este problema: se basan en el espacio en blanco, pero ofrecen una sintaxis alternativa para quienes deseen prescindir de ellos.
Desarrollo móvil
A medida que vemos el cambio de la computadora de escritorio al teléfono inteligente, está claro que necesitamos lenguajes sólidos para desarrollar software móvil.
Pero pocas aplicaciones móviles se desarrollan con Python. Eso no quiere decir que no se pueda hacer, hay un paquete de Python llamado Kivy para este propósito.
Pero Python no fue diseñado para dispositivos móviles. Entonces, si bien esto puede producir resultados aceptables para tareas básicas, lo mejor que puede hacer es usar un lenguaje creado para el desarrollo de aplicaciones móviles. Algunos marcos de programación ampliamente utilizados para dispositivos móviles incluyen React Native, Flutter, Iconic y Cordova.
Para ser claros, las computadoras portátiles y de escritorio deberían estar disponibles durante muchos años. Pero dado que los dispositivos móviles han superado durante mucho tiempo el tráfico de las computadoras de escritorio, es seguro decir que aprender Python no es suficiente para convertirse en un todoterreno experimentado.
Errores de tiempo de ejecución
Una secuencia de comandos de Python no se compila primero y luego se ejecuta. En cambio, se compila cada vez que lo ejecuta, por lo que cualquier error de codificación aparecerá en tiempo de ejecución. Esto conduce a un rendimiento deficiente, un consumo de tiempo y la necesidad de realizar muchas pruebas. Como muchas pruebas.
Esto es genial para principiantes porque las pruebas les enseñan mucho. Pero para los desarrolladores experimentados, tener que depurar un programa complejo en Python los hace salir mal. Esta falta de rendimiento es el factor más importante que define una marca de tiempo en Python.
¿Qué podría reemplazar a Python en el futuro y cuándo?
Hay algunos competidores nuevos en el mercado de los lenguajes de programación:
- Rust ofrece el mismo tipo de seguridad que Python: ninguna variable puede sobrescribirse accidentalmente. Pero resuelve el problema de rendimiento con el concepto de propiedad y préstamo. También es el lenguaje de programación más popular de los últimos años, según StackOverflow Insights.
- Go es ideal para principiantes como Python. Y es tan simple que es aún más fácil mantener el código. Punto curioso: los desarrolladores de Go son algunos de los programadores mejor pagados que existen.
- Julia es un lenguaje completamente nuevo que compite cara a cara con Python. Esto llena el vacío para los cálculos de ingeniería a gran escala: generalmente, habríamos usado Python o Matlab, y habríamos parcheado todo con bibliotecas de C ++, que se necesitan a gran escala. Ahora puedes usar Julia en lugar de hacer malabares con dos idiomas.
Si bien hay otros lenguajes en el mercado, Rust, Go y Julia son los que corrigen los parches débiles de Python. Todos estos lenguajes sobresalen en tecnologías futuras, especialmente en inteligencia artificial. Si bien su participación de mercado aún es pequeña, como lo demuestra la cantidad de etiquetas StackOverflow, la tendencia para cada una es clara: hacia arriba.

Teniendo en cuenta la popularidad generalizada de Python en este momento, seguramente tomará media década, tal vez incluso una completa, para que uno de estos lenguajes más nuevos lo reemplace.
En este momento, es difícil decir qué idioma será (Rust, Go, Julia o un nuevo idioma del futuro). Pero dados los problemas de rendimiento que son fundamentales en la arquitectura de Python, necesariamente ocuparemos su lugar.
Este artículo fue escrito por Rhea Moutafis y fue publicado originalmente en Hacia la ciencia de datos. Puedes leerlo aquí.