¿Es Python el lenguaje del futuro?

Python es uno de los lenguajes que más usamos en Paradigma junto con Java y Node.js. Desde hace años, hemos llevado a cabo exitosos proyectos desarrollados en este lenguaje.

Hace algunas semanas se publicó en el blog de Stackoverflow, la principal página de preguntas y respuestas sobre programación a nivel mundial, un interesante artículo reflexionando sobre el increíble crecimiento del uso del lenguaje de programación Python.

A raíz de este artículo, que ha tenido gran repercusión, queremos hacer un análisis más profundo sobre las causas que han llevado a Python a ser uno de los lenguajes más usados y qué perspectivas de futuro se plantean.

Los orígenes

El lenguaje Python surgió a principios de los 90 e inicialmente fue desarrollado por Guido Van Rossum, un ingeniero holandés que trabajaba en ese momento en el CWI de Amsterdam, el Centro de Investigación de Ciencias de la Computación holandés.

Python surgió como un hobby para Guido y su nombre, Python, fue tomado del grupo cómico británico Monty Python, del que Guido era un gran fan. Desde sus comienzos, Python nació como un proyecto de software libre y posiblemente deba parte de su éxito a la decisión de hacerlo código abierto.

Guido Van Rossum, desarrollador del lenguaje Python

Actualmente, la evolución del lenguaje Python es gestionada por la Python Software Foundation, una sociedad sin ánimo de lucro dedicada a dar difusión al lenguaje y apoyar su evolución. Guido sigue totalmente involucrado en el desarrollo y en la toma de decisiones de diseño.

Python está licenciado bajo licencia PSFL, derivada de BSD y compatible con GPL. Muchas empresas y organizaciones, como Google, Microsoft o Red Hat, hacen un gran uso de Python y tienen influencia en su evolución, pero ninguna ejerce un control sobre el mismo. Esto diferencia a Python de otros lenguajes.

Características diferenciales

Python tiene una serie de características que lo hacen muy particular y que, sin duda, le aportan muchas ventajas y están en la raíz de su uso tan extendido.

Python es un lenguaje multiparadigma, esto significa que combina propiedades de diferentes paradigmas de programación. Principalmente es un lenguaje orientado a objetos, todo en Python es un objeto, pero también incorpora aspectos de la programación imperativa, funcional, procedural y reflexiva.

Una de las características más reseñables de Python es que es un lenguaje interpretado, esto significa que no se compila a diferencia de otros lenguajes como Java o C/C++, sino que es interpretado en tiempo de ejecución. Además, es de tipado dinámico, aunque opcionalmente desde la versión 3.5 podemos hacer uso de tipado estático.

Python es cross plataforma, es decir, podemos ejecutarlo en diferentes sistemas operativos como Windows o Linux simplemente usando el intérprete correspondiente.

Algunos le achacan a Python que es más lento en tiempo de ejecución que otros lenguajes compilados como Java o C/C++. Y es cierto, al tratarse de un lenguaje interpretado, Python es más lento.

Sin embargo, esto no es un gran problema, las diferencias en velocidad son pequeñas y hoy en día el cuello de botella en los proyectos de desarrollo de software no está en la CPU. Gracias a avances como la computación en la nube, hoy en día disponemos de gran capacidad de cómputo a un coste muy asequible. El desafío está en acortar los tiempos de desarrollo, mejorando la mantenibilidad y calidad del código. Python pone foco en esto, facilitando la vida a los desarrolladores.

Los principios de diseño del lenguaje están guiados por una serie de aforismos recogidos en el “Zen de Python”. En estos principios podemos ver que la legibilidad del código y favorecer la simplicidad del mismo son partes esenciales del diseño del lenguaje desde el principio. Estas ideas han ayudado mucho a que la curva de aprendizaje de Python sea baja respecto a otros lenguajes.

Python como lenguaje de scripting

Tradicionalmente Python ha tenido un uso muy extendido como herramienta de scripting, sustituyendo a scripts escritos en bash, otros lenguajes de script más limitados o herramientas como AWK o sed. Por ello, Python siempre ha sido un buen compañero de los administradores de sistemas y los equipos de operaciones.

Hoy en día, muchas de las herramientas punteras para gestión de despliegues e infraestructura usan o se basan en Python. Algunas de las más destacadas son Ansible, Salt o Fabric.

Otra área en la que Python es pionero es en el mundo del scraping y el crawling, donde podemos extraer información de páginas web gracias a técnicas de “scraping”, herramientas de Python como Scrapy son muy usadas en este contexto.

Python en el desarrollo web

Otro de los campos en los que Python ha brillado en los últimos años es en el desarrollo de aplicaciones web, principalmente gracias a frameworks de desarrollo web muy potentes como Django, un framework completo o Flask, un microframework.

Sin embargo, en el ecosistema de desarrollo web existen muchas alternativas y frameworks muy maduros y asentados como Symfony para PHP, Spring para Java, Grails para Groovy o Rails para Ruby. Todos estos frameworks están continuamente tomando ideas entre ellos, inmersos en ofrecer las mejores alternativas para los desarrolladores.

En este caso la ventaja que aporta Django, el principal framework para desarrollo web en Python, es la de ofrecer un marco de trabajo completo y de calidad para desarrollar aplicaciones web muy rápido. Como su leitmotiv dice es: “el framework para perfeccionistas con fechas de entrega”.

Big Data, Data Science, AI: el boom de Python

Sin embargo, al margen de todas las bondades que hemos comentado del lenguaje, en los últimos años ha ocurrido algo que ha revolucionado y extendido radicalmente el uso de Python.

La generalización del Big Data en los últimos años, seguida de la explosión de la Inteligencia Artificial, Machine Learning, Deep Learning y el surgimiento de la ciencia de datos o data science como un nuevo área de trabajo con especialistas propios, ha revolucionado el panorama.

Y es que muchas de las nuevas herramientas que han surgido, y que son explotadas por los ingenieros de datos y los científicos de datos, han sido desarrolladas en Python o nos ofrecen Python como la forma predilecta de interactuar con ellas.

Podemos hablar de tecnología para Big Data como PySpark, de herramientas para Data Science como Pandas, NumPy, Matplotlib o Jupyter. De herramientas del procesamiento del lenguaje natural como NLTK, y por último el área de machine learning que tanto interés está despertando con herramientas como Tensorflow, MXNet o scikit-learn.

Conclusión

Podemos afirmar que Python es un lenguaje maduro, con una gran base de desarrolladores, documentación y proyectos en producción.

El crecimiento en el uso del lenguaje está siendo espectacular gracias, fundamentalmente, a las nuevas tecnologías de Data Science y Machine Learning, donde junto con el lenguaje R es el rey.

Sin embargo, R es un lenguaje más de nicho que proviene del mundo de la estadística. Python, por otro lado, es un lenguaje de propósito general y su uso está mucho más extendido.

En la siguiente gráfica vemos una proyección para los próximos años de Stackoverflow sobre el número de visitas que espera recibir en función de los principales lenguajes de programación.

Fuente: Stackoverflow

Otro índice muy relevante, el PYPL, basado en la popularidad de los lenguajes de programación en Google, sitúa a Python como el segundo con un crecimiento del 10% en los últimos 5 años.

Otros rankings como el del IEEE a mediados de 2017, también sitúan a Python en los primeros puestos.

Fuente: PYPL

Si hablamos específicamente del área de datos, las comparativas son aún más demoledoras. Recientemente, Kaggle, la plataforma para Machine Learning y Data Science de Google, ha realizado un estudio recopilando información sobre las preferencias de los profesionales del sector.

Un dato muy significativo es la respuesta a la pregunta: ¿Qué lenguaje de programación recomendaría a los nuevos científicos de datos aprender primero? Más del 63% de los encuestados respondió Python.

En resumen, si eres desarrollador, ingeniero o científico de datos es un buen momento para aprender Python e involucrarse en esta comunidad. En España existen diversos grupos locales que organizan diferentes actividades de formación y divulgación.

Desde Paradigma tenemos el privilegio de organizar el Meetup de Python Madrid, con charlas técnicas de diferentes temática en torno a Python todos los meses.

Anualmente la asociación Python España organiza un gran evento nacional de dos días duración, la PyConES, cada año en una ciudad diferente. ¡Así que no tienes excusas para sumergirte en el universo Python!

Manuel Zaforas es Ingeniero Superior en Informática por la UPM. Está interesado en Big Data, AI, Data Science, Machine Learning, Deep Learning, HPC, IoT, Cloud, NoSQL, NewSQL, Python y Agile. Actualmente trabaja en Paradigma como Scrum Master y Arquitecto Software dentro del área de AI & Big Data, ayudando a diferentes compañías a llevar a cabo sus procesos de transformación digital gracias al cambio cultural y a la implantación de la tecnología más innovadora.

Ver toda la actividad de Manuel Zaforas

2 comentarios

  1. Jose Huerta dice:

    Personalmente, y después de haber jugado un poco con cada uno, me decanto por Ruby antes que por Python. Pero es cierto que si miramos tendencias, Ruby parece una moda pasada y Python está en ascenso. Por lo que está claro quien es el rey.

    De todas formas no es esa la frase que más destacaría de tu artículo, sino el concepto de que hoy en día la eficiencia del código no es tan importante, somo el coste de desarrollo o la facilidad para mantenerlo. Es algo que trate en http://gestionati.es/comentarios/opinion/segundos-neuronas-y-tornillos y que en muchos casos sigo manteniendo.

    • Manuel Zaforas dice:

      Hola Jose, gracias por tu opinión. Sin duda Ruby es otro lenguaje muy interesante que ha sido influido e influye en Python. Sin embargo es verdad que el ámbito de aplicación y el uso de Ruby es más restringido.

      Como bien comentas una de las ideas centrales del artículo es la importancia cada vez mayor de optimizar los procesos de desarrollo y el mantenimiento en contra de la eficiencia del lenguaje en tiempo de ejecución.

      Sin embargo, el análisis de los datos y tendencias y las reflexiones que comparto en el artículo, es lo que me han hecho elegir el título.

      Un saludo

Escribe un comentario