La comunidad de programadores no se dio cuenta del potencial de Python hasta después de un par de décadas, el motivo, existían otros lenguajes que en su momento eran populares. Pero desde principios de la década de 2010, la popularidad de Python ha ido en aumento y, finalmente, ha logrado llegar al top arriba de C, C#, Java y JavaScript.
Las preguntas que debemos hacernos ahora es: ¿hasta cuándo continuará esa tendencia? ¿Cuándo será eventualmente reemplazado Python por otros lenguajes y cual será la razón?
En vez de pensar en cuando terminara su popularidad, evaluemos las virtudes que lo han echo ser tan popular y porque no, también sus debilidades.
Lo que hace que Python sea popular en este momento
Basémonos en los datos de Stack Overflow que es quien mide las tendencias. Dado el tamaño de StackOverflow, este es un buen indicador de la popularidad del lenguaje.
Si bien R se ha estancado 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 noventa. Eso no solo significa que ha tenido mucho tiempo para crecer. También ha adquirido una comunidad grande y solidaria.
Si tienes algún problema mientras codificas en Python, es muy probable que puedas resolverlo con una sola búsqueda en Google. Simplemente porque alguien ya se habrá encontrado con tu problema y habrá escrito algo útil al respecto.
Es amigable 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 declaras una variable; Python entenderá por el contexto si se trata de un número entero, un valor flotante, un valor booleano o algo más. Esta es una gran ventaja para los principiantes. Si alguna vez tuvo que programar en C++, sabes lo frustrante que es que su programa no se compile porque cambió un número flotante por un número entero.
Y si alguna vez has tenido que leer código de Python y C++ uno al lado del otro, sabrás lo comprensible que es Python. Aunque C++ se diseñó teniendo en cuenta el inglés, es una lectura bastante accidentada en comparación con el código de Python.
Es versátil
Dado que Python existe desde hace tanto tiempo, los desarrolladores han creado un paquete para cada propósito. En estos días, puedes encontrar un paquete para casi todo.
- ¿Quiere procesar números, vectores y matrices? NumPy es tu chico.
- ¿Quieres hacer cálculos para tecnología e ingeniería? Usa SciPy .
- ¿Quiere ir a lo grande en la manipulación y el análisis de datos? Dale una oportunidad a los pandas .
- ¿Quieres empezar con la Inteligencia Artificial? ¿Por qué no usar Scikit-Learn ?
Cualquiera que sea la tarea computacional que intentes administrar, lo más probable es 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ías imaginar que Python se mantendrá al tanto de todo durante mucho tiempo. Pero como toda tecnología, Python tiene sus debilidades.
Velocidad
Python es lento. Como, muy lento. En promedio, necesitará de 2 a 10 veces más tiempo para completar una tarea con Python que con cualquier otro Lenguaje.
Hay varias razones para eso. Uno de ellos es que se escribe dinámicamente; recuerde que no necesita especificar tipos de datos como en otros lenguajes. Esto significa que se necesita usar mucha memoria, porque el programa necesita reservar suficiente espacio para cada variable que trabaja en cualquier caso. Y mucho uso de memoria se traduce en mucho tiempo de cómputo.
Otra razón es que Python solo puede ejecutar una tarea a la vez. Esta 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 del día, ninguno de los problemas de velocidad importa. Las computadoras y los servidores se han abaratado tanto 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 . Básicamente, esto 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 usan alcance estático.
Python intentó hacer la transición al alcance estático, pero lo arruinó . 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 lleva a 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 de variables y las sentencias son siempre sentencias. 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 lenguajes.
Espacios en blanco
En Python, usa espacios en blanco y sangrías para indicar diferentes niveles de código. Esto lo hace visualmente 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 fácil de usar 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
Como estamos presenciando el cambio de computadora de escritorio a teléfono inteligente, está claro que necesitamos lenguajes sólidos para crear 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 hizo pensando en los dispositivos móviles. Entonces, aunque podría 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 existir durante muchos años. Pero dado que los dispositivos móviles han superado durante mucho tiempo el tráfico de escritorio, es seguro decir que aprender Python no es suficiente para convertirse en un desarrollador completo experimentado.
Errores de tiempo de ejecución
Un script 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 bajo rendimiento, consumo de tiempo y la necesidad de muchas pruebas. Como muchas pruebas.
Esto es genial para los principiantes ya que las pruebas les enseñan mucho. Pero para los desarrolladores experimentados, tener que depurar un programa complejo en Python hace que salgan mal. Esta falta de rendimiento es el factor más importante que establece una marca de tiempo en Python.
¿Quién podría reemplazar a Python en el futuro, y cuándo?
Hay algunos nuevos competidores en el mercado de los lenguajes de programación:
Rust ofrece el mismo tipo de seguridad que tiene 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, uno puede usar a Julia en lugar de hacer malabarismos con dos lenguajes.
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 por venir, más notablemente en Inteligencia Artificial. Si bien su participación de mercado aún es pequeña, como se refleja en la cantidad de etiquetas StackOverflow, la tendencia para todos ellos es clara: al alza.
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 lenguajes 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.
TDC, Rhea Moutafis