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

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 caducidad exacta en Python sería tanta especulación que bien podría pasar como ciencia ficción. En cambio, 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 la Tendencias de desbordamiento de pila, que miden el recuento de etiquetas en publicaciones en la plataforma. Dado el tamaño de StackOverflow, este es un buen indicador de la popularidad del idioma.

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 existe desde los noventa. Eso no solo significa que ha tenido mucho tiempo para crecer. También ha adquirido una comunidad grande y solidaria.

Entonces, 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 amigable para principiantes

No es solo el hecho de que ha existido durante décadas, lo que brinda a los programadores el tiempo para crear 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 flotante por un entero.

Y si alguna vez ha tenido que leer código Python y 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 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? Prueba Pandas.
¿Quieres empezar con la inteligencia artificial? ¿Por qué no utilizar Scikit-Learn?

Cualquiera que sea la tarea computacional que intente 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.

Las desventajas de Python y si serán fatales

Con base en las elaboraciones anteriores, podría imaginar que Python se mantendrá al tanto de la mierda 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.

Existen varias razones para eso. 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 estropear eso.

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 estropeó. Por lo general, los ámbitos internos, por ejemplo, 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 utilizar Lambdas para ellos.

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

Los espacios en blanco hacen que el código sea más legible, pero menos fácil de mantener.  Foto de Irvan Smith en Unsplash
Los espacios en blanco hacen que el código sea más legible, pero menos fácil de mantener. Foto de Irvan Smith en Unsplash

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 la computadora de escritorio al teléfono inteligente, está claro que necesitamos lenguajes sólidos para desarrollar software móvil.

Pero no se están desarrollando muchas aplicaciones móviles con Python. Eso no significa que no se pueda hacer, hay 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 que fue 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, es seguro decir 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 endeudamiento. 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 en el 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, se habría usado Python o Matlab y se habría arreglado todo con bibliotecas de C ++, que son necesarias a gran escala. Ahora, se puede utilizar a Julia en lugar de hacer malabarismos 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 aún por venir, 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.

Diagrama de popularidad de Go, Rust y Julia, de 2009 a 2020.
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.

Este artículo fue escrito por Rhea Moutafis y fue publicado originalmente en Hacia la ciencia de datos. Puedes leerlo aquí.


Source: The Next Web by feedproxy.google.com.

*The article has been translated based on the content of The Next Web by feedproxy.google.com. If there is any problem regarding the content, copyright, please leave a report below the article. We will try to process as quickly as possible to protect the rights of the author. Thank you very much!

*We just want readers to access information more quickly and easily with other multilingual content, instead of information only available in a certain language.

*We always respect the copyright of the content of the author and always include the original link of the source article.If the author disagrees, just leave the report below the article, the article will be edited or deleted at the request of the author. Thanks very much! Best regards!