Python: Por qué no es el lenguaje del futuro

Python: Por qué no es el lenguaje de programación del futuro

Aunque Python tendrá una gran demanda durante unos años más.


La comunidad de programación tardó un par de 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á esa tendencia? ¿Cuándo será finalmente reemplazado Python por otros lenguajes y por qué?

Poner una fecha de vencimiento exacta en Python sería tanta especulación que bien podría pasar como ciencia ficción. En su lugar, evaluaré las virtudes que están impulsando la popularidad de Python en este momento y los puntos débiles que lo romperá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 el recuento de etiquetas en las publicaciones de la plataforma. Dado el tamaño de StackOverflow, este es un buen indicador de la popularidad del idioma.

python
Instantánea de etiquetas en varios lenguajes de programación en StackOverflow.

Si bien R se ha estancado en los últimos años, y muchos otros lenguajes están en declive constante, 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 ha existido desde los noventa. Eso no solo significa que ha tenido mucho tiempo para crecer. También ha adquirido una comunidad grande y solidaria.

Por lo tanto, si tiene algún problema mientras codifica en Python, es muy probable que pueda resolverlo con una sola búsqueda en Google. Simplemente porque alguien ya habrá encontrado su problema y habrá escrito algo útil al respecto.

Es apto para principiantes

No es solo el hecho de que ha existido durante décadas, dando a los programadores el tiempo para hacer tutoriales brillantes. Más que eso, la sintaxis de Python es muy legible por humanos.

Para empezar, no es necesario especificar el tipo de datos. Simplemente declara una variable; Python entenderá del contexto si es un número entero, un valor flotante, un booleano o algo más. 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 cambió un float por un entero.

Y si alguna vez ha tenido que leer código Python y C ++ uno al lado del otro, sabrá cuán comprensible es Python. Aunque C ++ se diseñó teniendo en cuenta 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 propósito. En estos días, puede encontrar un paquete para casi todo.

¿Quiere procesar números, vectores y matrices? NumPy es tu chico.

¿Quiere hacer cálculos para tecnología e ingeniería? Utilice SciPy.

¿Quiere ir a lo grande en la manipulación y el análisis de datos? Pruebe Pandas.

¿Quieres empezar con la inteligencia artificial? ¿Por qué no utilizar Scikit-Learn?

Cualquiera que sea la tarea computacional que esté intentando administrar, es probable que exista un paquete de Python para ello. Esto hace que Python se mantenga al tanto de los desarrollos recientes, como se puede ver en el aumento del aprendizaje automático en los últimos años.

 

Desventajas de Python y si serán fatales

Con base en las elaboraciones anteriores, podría imaginar que Python se mantendrá en la cima durante siglos. Pero como toda 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 ello. 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 necesita usar mucha memoria, porque el programa necesita reservar suficiente espacio para cada variable con la que trabaja 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 ejecutar 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 existen otras teorías.

Pero al final del día, ninguno de los problemas de velocidad importa. Las computadoras y los servidores se han vuelto tan baratos que estamos hablando de fracciones de segundos. 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 básicamente 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. Es por eso que la mayoría de los lenguajes de programación modernos utilizan el alcance estático.

Python intentó hacer la transición al alcance estático, pero lo arruinó. Por lo general, los ámbitos internos, por ejemplo, las funciones dentro de funciones, podrían ver y cambiar los ámbitos externos. En Python, los ámbitos internos solo pueden ver los ámbitos externos, pero no cambiarlos. Esto genera mucha confusión.

Lambdas

A pesar de toda la flexibilidad dentro de Python, el uso de Lambdas es bastante restrictivo. Las lambdas solo pueden ser expresiones en Python y no declaraciones.

Por otro lado, las declaraciones y declaraciones de variables son siempre declaraciones. Esto significa que no se pueden usar Lambdas para ellos.

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

Espacios en blanco

En Python, usa espacios en blanco y sangrías para indicar diferentes niveles de código. Esto lo hace ópticamente atractivo e intuitivo de entender.

Otros lenguajes, por ejemplo 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 mantener. Para proyectos más grandes, esto es mucho más útil.

Los lenguajes más nuevos como Haskell resuelven este problema: se basan en espacios en blanco, pero ofrecen una sintaxis alternativa para aquellos que desean prescindir de ellos.

Desarrollo móvil

A medida que somos testigos del cambio de las computadoras de escritorio a los teléfonos inteligentes, está claro que necesitamos lenguajes sólidos para crear software para dispositivos móviles.

Pero no se están desarrollando muchas aplicaciones móviles con Python. Eso no significa que no se pueda hacer; existe un paquete de Python llamado Kivy para este propósito.

Pero Python no se creó pensando en los dispositivos móviles. Entonces, aunque puede producir resultados aceptables para tareas básicas, su mejor opción 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 computadoras de escritorio, se puede decir con seguridad que aprender Python no es suficiente para convertirse en un desarrollador completo experimentado.

Errores en 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 se manifiesta en tiempo de ejecución. Esto conduce a un rendimiento deficiente, un consumo de tiempo y la necesidad de muchas pruebas. Como muchas pruebas.

Esto es ideal para principiantes, ya que 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 establece 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 lenguajes de programación:

  • Rust ofrece el mismo tipo de seguridad que Python: ninguna variable puede sobrescribirse accidentalmente. Pero resuelve el problema del rendimiento con el concepto de propiedad y préstamo. También es el lenguaje de programación más querido 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 divertido: los desarrolladores de Go se encuentran entre los programadores mejor pagados del mercado.
  • Julia es un lenguaje muy nuevo que compite de frente con Python. Llena el vacío de los cálculos técnicos a gran escala: por lo general, uno habría usado Python o Matlab y parcheado todo con bibliotecas C ++, que son necesarias a gran escala. Ahora, se puede utilizar a 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, sobre todo en Inteligencia Artificial. Si bien su participación de mercado sigue siendo pequeña, como se refleja en la cantidad de etiquetas StackOverflow, la tendencia para todas ellas es clara: hacia arriba.

python
Instantánea de etiquetas en varios lenguajes de programación en StackOverflow.

Dada la ubicua popularidad de Python en este momento, seguramente tomará media década, tal vez incluso una totalidad, para que cualquiera de estos nuevos lenguajes lo reemplace.

Es difícil decir cuál de los idiomas será (Rust, Go, Julia o un nuevo idioma del futuro) en este momento. Pero dados los problemas de rendimiento que son fundamentales en la arquitectura de Python, uno inevitablemente ocupará su lugar.