BLOG | Python, populaire, mais pas en ESN ?

22/03/2024

Par Patrice Ferlet

Aujourd’hui numéro un des langages les plus populaires et les plus utilisés, Python est un langage majeur dans l’ensemble du marché IT. Pourtant, il est encore boudé en ESN, et d’autant plus en France. Alors, pourquoi est-il si populaire ? À quoi sert-il ? Et pourquoi vous devriez le considérer pour vos futurs projets ? On va répondre à ces questions

Une popularité qui ne fait plus débat

python logo


Python arrive en tête du classement des langages les plus utilisés selon l’index TIOBE, et ce depuis 5 ans.

Langage pratique, simple, efficace, très pédagogique et en même temps professionnel, il s’est imposé dans énormément de métiers de l’informatique.

Cependant, en ESN, les langages rois sont toujours et encore Java et PHP, avec C# qui n’est pas en reste.

Est-ce que Python ne propose pas ce qu’il faut pour des projets Web, Digital Workplaces, ou mobiles ?
La réponse est, bien entendu, plus tortueuse. Mais avant de comprendre cet étrange absence de Python en ESN, rappelons ce qu’il est, ce qu’il fait et ce qu’il propose.

Une très longue histoire, en quelques mots

Guido portrait

Retracer le chemin de Python depuis 1989, en quelques lignes, cela s’avère un défi. Mais relevons le challenge.

Comme beaucoup de langages, et notamment dans l’univers de l’Open Source, c’est en Europe que nait Python en 1989 sous les mains de Guido Van Rossum aux Pays-Bas. 

Grand fan des Monty Python, il nomme ce langage qu’il a créé pendant les vacances de Noël. Il le propose à ses collègues pour des raisons de simplification de certaines de leurs tâches, et finalement en 1991, une version est proposée à la communauté.

Durant les 20 années suivantes, le langage forge sa réputation. D’un côté, une image positive de simplicité et d’ouverture, de l’autre sur sa lenteur légendaire.

     |  Lenteur qui a été soignée, rassurez-vous.

Aujourd’hui, la version 3.12 est dans les bacs. Il est installé par défaut sur la quasi-totalité des distributions Linux, et même sur OSX. Seul Windows se refuse, à ce jour, de l’intégrer. Et c’est peut-être une des pistes de la question posée initialement dans cet article. Est-ce un argument qui explique que les ESN ne se penchent pas assez sur les solutions Python ?

Toujours est-il que Python est développé au sein de la “Python Software Fundation”. Utilisé dans des milliers de projets, intégré à de diverses solutions, et surtout très largement adopté dans les projets de Machine Learning, il est devenu central dans le monde de l’informatique.

Pourquoi est-il si utile ?

Python est dit “multiparadigme”, en clair, il peut être utilisé de manière impérative, fonctionnelle et objet.

C’est, par conséquent, un “langage à tout faire”, rien que ça… on pourrait croire que c’est trop beau pour être vrai, pourtant…

Il permet de développer des petits outils systèmes, des interfaces graphiques, il est le langage principal pour le machine learning, il a aussi une panoplie de packages pour travailler sur le "computer vision", il est adapté au développement Web pour créer des API, il sait très bien manipuler les fichiers, les données, et il est intégrable sans mal dans diverses solutions. Par exemple, Blender, le logiciel 3D, utilise Python pour le développement des “add-ons”. Et certains jeux et moteurs de jeux, proposent Python en guise de langage d’interface.

schéma python


     | En bref, il est omniprésent, présent partout.

Vous allez donc vous dire que c’est un peu trop beau pour être vrai, et qu’un langage ne peut pas écrire sur tous les tableaux.

Python a un avantage, il est simple à interfacer. Vous pouvez l’intégrer dans des projets, des frameworks, des IDE, des logiciels développés dans d’autres langages, etc. Sa force réside dans sa souplesse, que ce soit dans la syntaxe ou sa capacité à utiliser des librairies externes.

De ce fait, il est adapté à énormément de paradigmes et de méthodologies. Il est “objet”, peut être utilisé de manière fonctionnelle et fournit des fonctionnalités natives qui servent à beaucoup d’approches.

Et par cette nature à permettre le développement sans contrainte, énormément de capacités lui ont été proposées sous formes de packages.

Pour ne parler que des plus connus :

  • API Web (REST), Flask ou Quart, Fast API ou encore Django
  • Computer Vision, manipulation d’images, OpenCV et Pillow (PIL)
  • Machine Learning, Tensorflow, Torch ou encore MxNet vont vous permettre de créer vos IA
  • En ce qui concerne le calcul mathématique, NumPy est au cœur de la plupart des solutions
  • Manipulation de données et “data frame”, avec Pandas
  • Graphiques, notre bon vieux Mathplotlib est là, et il comprend naturellement les sorties de Pandas ou de Numpy en général, mais Plotly se fait entendre depuis un certain temps
  • Pygame pour faire des jeux… connecté à OpenGL
  • Kyvy pour développer des applications mobiles
  • GTK, Adwaita, QT, etc… pour l’interface graphique
  • … et tellement d’autres
python demo

Difficile de lister toutes les possibilités proposées par ce langage. C’est vaste, vraiment vaste.

    I Mais est-ce trop vaste ?

On pourrait croire qu’il en fait trop. En réalité, c’est logique qu’il soit capable de toucher à tous les domaines.

Python c’est juste un langage, ce qui le rend aussi omniprésent, c’est qu’il est très adaptable. Dans les faits, tous les packages que j’ai listés ci-dessus sont des interfaces à des librairies développées à part, et parfois (souvent) dans un autre langage. C’est d’ailleurs ce qui assure à Python une vitesse d’exécution bien plus qu’acceptable.

Par exemple, Tensorflow et Torch sont des librairies développées en C/C++, occasionnellement un peu de Rust. Python est juste là pour s’accrocher à des méthodes, pour vous donner accès aux couches “bas niveau” avec simplicité. En l’occurrence, si vous créez un modèle d’IA en Python, vous utilisez en réalité des couches en C, qui vont s’occuper d’aller compiler le modèle avec CUDA.

En d’autres termes, Python est aux packages ce qu’un bouton poussoir est la machine à laver le linge. Il sert d’interface. Mais pas que… Car le langage, en lui-même, n’est pas en reste !

C’est un langage réfléchi

Python c’est bien entendu un langage avant tout. A l’inverse de beaucoup d’autres langages, il se base sur l’indentation (et donc, cela vous force à coder un peu plus proprement), et sa sémantique est orienté sur le langage humain.

Prenons un exemple, vous voulez savoir si “John” est dans la liste “users”:

if"John"in users:
    print("Oui j'ai trouvé John")

Et cela marche de la même manière pour un mot dans une phrase, ou une clef dans un dictionnaire (un tableau indexé, grosso modo)

Mais ce qui est très souvent cité dans les avantages de Python, ce sont les “list comprehension”. En d’autres termes, sa capacité à comprendre et traiter une liste en une ligne. Voici des exemples :

users = ["Alice", "Bob", "John", "Bernard", "Bruce"]
# on ne veut que les prénoms commençant par B
Busers = [user for user in users if user[0]=="B"]

# filtrons les entrées nulles
results = [1, 4, None, 5,9, 4, 10, None, 6]
not_none = [r for r in results if r is not None]

# tous les nombres pairs entre 0 et 9
pairs = [p*2 for p in range(10)]

Et ce n’est rien à coté des concepts de décorations, de proxies, de méta classes…

Flask par exemple, fait un usage massif de beaucoup de concepts de Python, regardez ce bout de code :

from flask import Flask
app = Flask(__name__)

@app.route("/api/v1/hello")
def hello():
      return "Hello you!"


Croyez le ou non, ces quelques lignes suffisent à répondre à un appel HTTP sur /api/v1/hello, pas besoin de coder plus que ça.

Mais alors, pourquoi on ne l’utilise pas plus que ça en ESN ?

     | On en vient à la question initiale, posée en préambule de cet article.

C’est pour une raison toute simple et difficile à contrer…

     | La plupart préfèrent utiliser le standard, même s’il est peu adapté, qu’une alternative efficace par peur de perte de maitrise.

Devons-nous fustiger cette manière de voir les choses ? Absolument pas ! La nouveauté et la peur de perdre le contrôle sont évidemment naturels.

     | Mais ces peurs trouvent difficilement une justification aujourd’hui, car Python est un standard. Et il est maitrisable !

Il faut bien comprendre que, historiquement, lors de l’avènement d’internet au début des années 2000, les langages Java et PHP étaient les maitres du monde. Les nouveaux métiers “du net” se sont forgés autour de ces langages. Et ce sont ces ingénieurs qui sont, aujourd’hui, les formateurs des nouvelles générations. La majorité l’emporte.

Il est vrai que C# est arrivé à temps avec une entreprise capable de communiquer lourdement sur sa technologie (on parle de .Net par Microsoft, bien entendu). Mais les autres langages ont peiné longuement à se faire entendre par le biais de communauté ou de quelques rares gros comptes qui ont utilisé des outils “modernes”. Google ayant d’ailleurs embauché Guido V. Rossum, ce qui a contribué à emmener Python sur des services à grande échelle.

Mais tout comme Python, d’autres langages ont été boudés dans le monde du Web. Ruby, qui a pourtant eu un moment de gloire, est aujourd’hui très peu utilisé.

Rien n’est perdu pour Python dans le monde du Web !

Le nouveau souffle est venu de la Data Science. 
Depuis que le Machine Learning a levé l’intérêt dans le marché informatique.

Mais il reste quasi systématiquement enfermé dans ce domaine. Et c’est un peu triste.

     | Python aiderait fortement à réduire la charge de travail des développeurs d’applications Web. Heureusement, sa communauté ne lâche pas le morceau si facilement.

Puis sont arrivés les Lambda, propulsées par Amazon AWS, Python (en plus de Go et NodeJS) a trouvé sa place dans cette offre FaaS (Function as a Service). Parce que sa syntaxe et sa structure se prêtent aussi à ce type de projet.

Alors, non, rien n’est perdu pour Python dans les ESN. D’abord parce que son utilisation massive dans les autres types de marchés / offres permet de le promouvoir, mais aussi parce que la communauté de développeurs se rend compte que Python s’adapte au DevOps, micro-service ou encore en outillage CI/CD mieux que d’autres plus… disons… vieillissants et immobiles dans ces activités.

Nous sommes nombreux à militer pour que Python, et tout l’écosystème qui vient avec, soient promus dans les ESN. Car le gain de temps, de performance, et par conséquent l’intérêt financier d’utiliser une telle technologie devrait convaincre.

Flask, Quart, Django, ou encore FastAPI, sont de véritables réponses pour la création d’API, de portails et autres projets Web. Python à tout ce qu’il faut pour se connecter à des services Redis, RabbitMQ, PostGreSQL, MySQL/MariaDB, Mongo, etc.

Et il est très facile à utiliser comme fonction lambda dans AWS, Scaleway, OVH ou autres fournisseurs proposant le paradigme “Function as a Service”.

En bref, Python arrive, à son rythme, mais il est là. Ne pas l’utiliser aujourd’hui va vous mener à avoir un train de retard dans les mois ou années à venir.

Conclusion

Python ne demande pas beaucoup d’efforts pour se former. Il est d’ailleurs très utilisé au collège pour que nos jeunes têtes blondes apprennent les rudiments de la programmation.

Python est un langage qui offre énormément de solutions. Il peut être la réponse à des problématiques récurrentes. Il est facile à conteneuriser, prend peu de ressources système et propose de très bonnes performances, et peut même proposer de la haute performance pour qui sait utiliser PyPy, Cython ou Pyrex (seulement si besoin).

Vous hésitez encore ? Testez le ! D’ailleurs, pour apprendre, de manière interactive, à utiliser Python ? Visitez Learn Python qui est une très bonne introduction.

  • Par Patrice Ferlet

    Lead Tech / Architect - DevOps

    Suivre