Hace unos días estuve en una apasionante discusión entre amigos en el grupo privado #dinocoders de telegram, sobre la popularidad y evolución de los lenguajes de programación. Somos amigos desde hace unos 30 años y todos somos programadores, aunque hemos evolucionado hacia distintos targets, así que teníamos visiones muy distintas de los lenguajes y como se usan. Discutíamos principalmente sobre lenguajes de alto y medio nivel, sobre su idoneidad para según que proyectos, ya sea educación, sistemas, empresarial o vídeo juegos. No hubo consenso en algunos aspectos pero sí llegamos a la conclusión de que en el vertiginoso mundo de la tecnología, la popularidad de los lenguajes de programación puede cambiar rápidamente. A lo largo de los años, hemos visto surgir nuevos lenguajes mientras otros han caído en desuso. En la puesta en común que hicimos, discutimos sobre todo de Python, Java, JavaScript, C#, C/C++ pero para este análisis de popularidad he añadido PHP por su peso en la web, además Dart, Go y Rust por ser las más nuevas y prometedoras incorporaciones. También discutimos si era conveniente usar IA para codificar, si ayudaban a los programadores seniors o si los juniors se podían beneficiar o perjudicar.
Así que con las ideas que extraje, he decidido, ayudándome de ChatGPT con la idea de entretenerme un rato, escribir este artículo y realizar mi propio análisis gráfico usando herramientas de programación: python, matplotlib y pandas. Tiempo aproximado de todo el proceso, una hora y media.
Pero también he echado este rato con la idea de evaluar hacia donde va Dart y Flutter, ya que tengo varios proyectos personales pendientes y debo decidir si los desarrollo con React, una biblioteca con la que ya tengo buena experiencia, o si doy el paso hacia Flutter. En 2010, me encontraba en una situación similar, evaluando qué framework de Python aprender. Dudaba entre Django y Web2py, pero finalmente me decidí por Web2py porque me parecía más potente y sencillo de aprender, además de contar con una buena comunidad. Con el tiempo, Web2py perdió relevancia y tuve que reinvertir mi tiempo en aprender Django.
Algo similar me ocurrió con las bibliotecas de JavaScript. Después de programar con jQuery y tener una breve experiencia con Angular 1.x, tuve que elegir entre Angular, React y Meteor. Meteor era el que más me gustaba de los tres, pero finalmente opté por React, y esta vez acerté. Actualmente, React es uno de los proyectos más populares.
Así que no pierdo nada tratando de evaluar Flutter gracias a la evolución de la popularidad de su lenguaje base: Dart.
Para el análisis me he basado en un dataset recogido de Kaggle
https://www.kaggle.com/datasets/muhammadkhalid/most-popular-programming-languages-since-2004?resource=download cuyos datos provienen del proyecto PYPL https://pypl.github.io/
El índice de popularidad de lenguajes de programación de PYPL se crea analizando la frecuencia con la que se buscan tutoriales de idiomas en Google: cuanto más se busca un tutorial de idiomas, más popular se supone que es el idioma. Es un indicador adelantado. Los datos sin procesar provienen de Google Trends. Si cree en la sabiduría colectiva, el índice de popularidad de lenguajes de programación de PYPL puede ayudarlo a decidir qué lenguaje estudiar o cuál usar en un nuevo proyecto de software.
El código fuente de mi analizador del dataset de PYPL lo he subido a mi cuenta de Github
https://github.com/FreeMEM/popularity_languages_evolution
si lo ejecutas genera un video en formato mp4 como este
y otro como este
Python: El Gigante del Crecimiento
Python ha sido uno de los lenguajes con mayor crecimiento en las últimas dos décadas. Su sintaxis clara y legible, junto con una vasta cantidad de bibliotecas y un fuerte soporte comunitario, lo han convertido en una herramienta indispensable tanto en el desarrollo web como en el análisis de datos, inteligencia artificial y más. Su ascenso constante lo ha llevado a ser uno de los lenguajes más populares y demandados en la actualidad.
Evolución: Python ha mostrado un crecimiento continuo y significativo desde 2004, consolidándose como uno de los lenguajes más populares en 2024.
Razones del Crecimiento:
- Simplicidad y Legibilidad: Su sintaxis clara y legible lo hace ideal para principiantes y expertos.
- Versatilidad: Es utilizado en diversas áreas como desarrollo web (Django, Flask), ciencia de datos (pandas, NumPy), inteligencia artificial (TensorFlow, PyTorch), automatización, etc.
- Comunidad y Recursos: Una comunidad muy activa y una gran cantidad de recursos disponibles facilitan el aprendizaje y la resolución de problemas.
- Adopción en Educación: Python se ha convertido en el lenguaje preferido en el ámbito educativo, lo que incrementa su uso y adopción en nuevos proyectos.
Java: La Piedra Angular de la Programación Empresarial
Java ha mantenido una popularidad constante gracias a su robustez, portabilidad y su amplio uso en aplicaciones empresariales y sistemas Android. A pesar de la aparición de nuevos lenguajes, Java sigue siendo una opción preferida para grandes sistemas y aplicaciones móviles, manteniendo su relevancia en el panorama tecnológico.
Evolución: Java ha mantenido una popularidad estable con ligeros altibajos a lo largo de los años.
Razones de la Estabilidad:
- Aplicaciones Empresariales: Su robustez y escalabilidad lo hacen ideal para aplicaciones empresariales.
- Portabilidad: El lema «escribe una vez, ejecuta en cualquier lugar» ha sido fundamental para su adopción.
- Ecosistema Android: Java es uno de los lenguajes principales para el desarrollo de aplicaciones Android, aunque Kotlin está ganando terreno.
- Mantenimiento de Legado: Muchas grandes empresas dependen de sistemas construidos en Java, lo que garantiza su relevancia continua.
JavaScript: El Rey del Desarrollo Web
JavaScript ha consolidado su posición como el lenguaje más importante para el desarrollo web. Con la evolución de tecnologías como Node.js, React, y Vue.js, JavaScript no solo se utiliza para el front-end, sino también para el back-end y el desarrollo de aplicaciones de una sola página (SPA). Su versatilidad y su capacidad para adaptarse a nuevas tendencias tecnológicas le aseguran un lugar prominente en el futuro.
Evolución: JavaScript ha experimentado un crecimiento constante, con un auge significativo en los últimos años.
Razones del Crecimiento:
- Desarrollo Web: Es el lenguaje principal para el desarrollo de aplicaciones web interactivas.
- Frameworks y Bibliotecas: La aparición de frameworks y bibliotecas como React, Angular, y Vue.js ha revolucionado el desarrollo front-end.
- Node.js: Ha permitido a los desarrolladores utilizar JavaScript en el lado del servidor, aumentando su versatilidad.
- Comunidades Activas: Un ecosistema dinámico y una comunidad activa impulsan su desarrollo continuo.
C#: La Fuerza Detrás de .NET
C# es un lenguaje central en el ecosistema de Microsoft, especialmente en el desarrollo de aplicaciones con .NET. Ha mantenido una popularidad estable debido a su integración con herramientas de desarrollo de Microsoft y su capacidad para crear aplicaciones de escritorio, móviles y web de alto rendimiento.
Evolución: C# ha mantenido una popularidad estable, con picos de crecimiento en ciertos períodos.
Razones de la Estabilidad:
- Integración con Microsoft: Es el lenguaje principal para el desarrollo con .NET, muy utilizado en aplicaciones empresariales.
- Desarrollo de Juegos: Amplio uso en el desarrollo de videojuegos gracias a Unity.
- Evolución Constante: Microsoft ha mantenido C# actualizado con nuevas características y mejoras de rendimiento.
C/C++: La Base de la Programación de Sistemas
C y C++ siguen siendo esenciales en el desarrollo de sistemas operativos, motores de videojuegos y aplicaciones de alto rendimiento. A pesar de que no son los lenguajes más modernos, su eficiencia y control sobre los recursos del sistema los hacen indispensables en áreas críticas de la programación.
Evolución: C y C++ han mantenido una popularidad constante con ligeras caídas.
Razones de la Constancia:
- Sistemas Críticos: Utilizados en sistemas operativos, motores de juegos, y aplicaciones de alto rendimiento.
- Eficiencia y Control: Ofrecen un control preciso sobre los recursos del sistema.
- Legado: Muchos sistemas y aplicaciones existentes están escritos en C/C++.
Dart: El Futuro del Desarrollo Móvil y Web
Dart, desarrollado por Google, ha ganado popularidad con el marco de trabajo Flutter, que permite desarrollar aplicaciones móviles y web con un solo código base. Aunque aún es joven, su capacidad para crear aplicaciones rápidas y eficientes lo convierte en un lenguaje prometedor.
Evolución: Dart ha mostrado un crecimiento significativo en los últimos años.
Razones del Crecimiento:
- Flutter: La popularidad del framework Flutter para desarrollo móvil y web ha impulsado el uso de Dart.
- Desarrollo Rápido: Permite crear aplicaciones nativas con una base de código única.
Go: La Eficiencia de Google
Go, o Golang, creado por Google, es conocido por su eficiencia y simplicidad en la construcción de sistemas distribuidos y aplicaciones de servidor. Su popularidad ha crecido rápidamente, especialmente en el desarrollo de aplicaciones en la nube y sistemas de gran escala.
Evolución: Go ha experimentado un crecimiento continuo.
Razones del Crecimiento:
- Eficiencia: Diseñado para el desarrollo de sistemas distribuidos y aplicaciones concurrentes.
- Adopción por Grandes Empresas: Utilizado por empresas como Google, Dropbox y Uber por su rendimiento y eficiencia.
PHP: El Pilar del Desarrollo Web Dinámico
PHP ha sido fundamental en la creación de sitios web dinámicos y aplicaciones web. A pesar de las críticas, PHP sigue siendo ampliamente utilizado, especialmente con sistemas de gestión de contenidos como WordPress y frameworks como Laravel.
Evolución: PHP ha mostrado una disminución en popularidad, pero sigue siendo ampliamente utilizado.
Razones del Declive:
- Competencia: La aparición de nuevos lenguajes y frameworks ha reducido su uso.
- Legado: Sigue siendo fundamental para muchos sitios web y CMS como WordPress.
- Frameworks Modernos: Frameworks como Laravel han revitalizado su uso en ciertos proyectos.
Rust: La Nueva Frontera de la Seguridad y el Rendimiento
Rust ha emergido como un lenguaje moderno enfocado en la seguridad y el rendimiento. Su capacidad para prevenir errores comunes y su eficiencia lo han hecho popular entre los desarrolladores que buscan construir sistemas seguros y de alto rendimiento.
Evolución: Rust ha mostrado un crecimiento constante y significativo.
Razones del Crecimiento:
- Seguridad: Su enfoque en la seguridad de memoria lo hace atractivo para sistemas críticos.
- Rendimiento: Combina seguridad con alto rendimiento, ideal para sistemas de alto rendimiento.
- Comunidad Activa: Una comunidad activa y soporte de empresas como Mozilla impulsan su adopción.
El análisis de la evolución de la popularidad de los lenguajes de programación revela tendencias interesantes influenciadas por factores como la adopción en la industria, el soporte comunitario, la aparición de nuevas tecnologías y frameworks, y la persistencia de sistemas legados. Entender estas dinámicas puede ayudar a desarrolladores y empresas a tomar decisiones informadas sobre qué lenguajes aprender y utilizar en sus proyectos futuros.
Con respecto a Flutter/Dart, creo que con estos datos no tengo todavía nada clara la decisión. Necesito encontrar más fuentes de datos para analizarlos. Ya os iré contando en el futuro. Pero me he divertido.