Leçon 1 — Pourquoi Python a gagné
La réponse habituelle est « parce que Python est simple ». C'est faux, ou du moins très insuffisant : Ruby est simple, Lua est simple, et ni l'un ni l'autre n'a de bibliothèque de deep learning. La vraie réponse est plus intéressante, et elle vous dit quelque chose d'utile sur la façon d'apprendre.
Le paradoxe de départ
Python est un langage lent. Sur une boucle numérique brute, il est couramment cinquante à cent fois plus lent que du C. Un domaine dont l'activité principale consiste à multiplier des matrices géantes aurait dû l'écarter d'emblée.
Il l'a choisi. Pourquoi ?
Parce que Python ne calcule pas. Il commande.
Quand vous écrivez une multiplication de matrices en Python avec NumPy, le langage n'exécute aucune multiplication. Il transmet deux blocs de mémoire à une bibliothèque d'algèbre linéaire écrite en C et en Fortran, optimisée depuis les années 1970, qui exploite les instructions vectorielles de votre processeur. Python attend, récupère le résultat, et vous le rend.
Python est le chef d'orchestre, pas l'instrumentiste. Un chef d'orchestre n'a pas besoin de jouer vite. Il a besoin d'être clair.
C'est ce qui rend le paradoxe supportable : vous écrivez du code lisible, et 99 % du temps machine se passe dans du code compilé que vous n'avez pas écrit. Le seul moyen de perdre cet avantage est d'écrire vous-même la boucle de calcul en Python — l'erreur de débutant classique, traitée dans la leçon suivante.
Ce qui s'est réellement passé, dans l'ordre
L'histoire compte, parce qu'elle explique pourquoi le rattrapage par un autre langage est si difficile.
1995-2006 : la base numérique. Des chercheurs veulent remplacer MATLAB, coûteux et fermé. Ils construisent Numeric, puis Numarray, réunis en NumPy en 2006. À ce moment, Python possède un tableau numérique rapide. Rien d'autre n'existe encore.
2007-2010 : la science autour. SciPy apporte l'optimisation, l'intégration, les statistiques. Matplotlib apporte les graphiques. scikit-learn naît en 2007 d'un projet de Google Summer of Code et standardise le machine learning classique derrière une interface unique. pandas arrive en 2008, venu de la finance, et rend enfin praticable la manipulation de données tabulaires réelles.
2010-2015 : les notebooks. IPython Notebook, devenu Jupyter, transforme la façon de travailler : on explore, on affiche, on garde la trace, on partage. Cela paraît anecdotique. Cela a été décisif pour l'adoption dans la recherche.
2015-2019 : le deep learning. TensorFlow sort chez Google en 2015, PyTorch chez Facebook en 2016. Les deux visent Python en priorité. Le choix n'était plus discutable.
2018-2026 : les modèles pré-entraînés. Hugging Face rend accessibles des centaines de milliers de modèles, avec une interface Python. Aujourd'hui, tout article de recherche publié avec du code publie du code Python.
L'effet de réseau, et pourquoi il est verrouillé
Chaque brique de cette chronologie a rendu la suivante plus facile à construire, et chacune a rendu le départ plus coûteux. C'est un effet de réseau classique, et il est aujourd'hui pratiquement indéboulonnable.
Concrètement, si vous choisissez un autre langage :
- L'article de recherche que vous voulez reproduire est accompagné de code Python.
- Le modèle pré-entraîné que vous voulez utiliser est distribué avec une interface Python.
- Le tutoriel qui répond exactement à votre problème est en Python.
- Le collègue à qui vous demandez de l'aide travaille en Python.
Julia est techniquement supérieur pour le calcul numérique pur. R est meilleur en statistique inférentielle. Ni l'un ni l'autre n'a l'écosystème, et pour un praticien, l'écosystème est le langage.
Python n'est pas devenu le langage de production de l'IA. Un modèle entraîné en Python est très souvent servi ailleurs : exporté vers ONNX, embarqué dans un service Go ou Java, compilé pour un téléphone. Python domine l'entraînement et l'expérimentation. Le service en production est un autre métier, traité dans le cours MLOps.
Ce que cela change pour votre apprentissage
Trois conséquences pratiques.
Apprenez les bibliothèques, pas la virtuosité en Python. Un praticien productif utilise un sous-ensemble modeste du langage : structures de données, fonctions, compréhensions de listes, gestion d'exceptions. Ce qui distingue un bon praticien, c'est la maîtrise de pandas et de scikit-learn, pas la connaissance des métaclasses.
Lisez du code des autres tôt. Comme tout est publié en Python, votre capacité à lire un notebook trouvé sur Kaggle ou un dépôt d'article de recherche est un accélérateur direct. C'est une compétence qui s'entraîne.
N'écrivez pas ce qui existe. Le réflexe du développeur qui arrive d'un autre langage est d'implémenter la logique lui-même. Dans cet écosystème, c'est presque toujours une erreur : la fonction existe, elle est testée, et elle est cent fois plus rapide que la vôtre.
En trois phrases
Python domine l'IA malgré sa lenteur parce qu'il n'exécute pas les calculs : il pilote des bibliothèques compilées en C, C++ et CUDA. Cette domination s'est construite couche par couche entre 2006 et 2020, chaque brique rendant la suivante plus facile et le départ vers un autre langage plus coûteux. Pour vous, cela veut dire apprendre les bibliothèques plutôt que le langage, et ne jamais réimplémenter ce que l'écosystème fournit déjà.