Mojo 1.0 est là : Pourquoi Python est lent, comment Mojo accélère et la vérité derrière les 35 000x

Mojo 1.0 est là : Pourquoi Python est lent, comment Mojo accélère et la vérité derrière les 35 000x

ProgrammationTechnologie

Sources:HN + web research · HN

35 000 fois plus rapide — c’était le chiffre choc mis en avant par le langage de programmation Mojo lors de son lancement en 2023, en se comparant directement à Python, le langage le plus populaire au monde. Trois ans plus tard, le 11 août 2026, ce langage réputé pour sa promesse « 35 000 fois plus rapide » sort officiellement en version 1.0. Pour le grand public, cela peut ressembler à l’annonce de la sortie d’un nouveau modèle de voiture. Mais c’est l’occasion idéale de faire le point sur deux questions fondamentales : pourquoi Python est-il lent, sur quoi repose la vitesse de Mojo, et quelle est la part de vérité derrière ce chiffre spectaculaire de 35 000x.

Image d'en-tête de l'annonce de sortie de Mojo 1.0 Image : Image d’en-tête de l’annonce de sortie de Mojo 1.0. Source : modular.com

Pourquoi Python est lent : Comme traduire chaque phrase à la volée

Clarifions d’abord un point essentiel : quand on dit que « Python est lent », on parle spécifiquement des performances en calcul pur, et non du temps d’ouverture d’un logiciel. Pour des tâches comme la lecture de fichiers sur disque ou les requêtes réseau, Python ne diffère guère des autres langages, car le goulot d’étranglement réside dans le disque ou le réseau. Le véritable écart se creuse lorsque l’on demande à l’ordinateur d’exécuter des calculs mathématiques massifs, comme le traitement d’images ou l’exécution d’algorithmes complexes. La lenteur de Python s’explique par trois choix de conception bien connus.

Premièrement, Python est un langage « interprété ». Imaginez qu’un langage de programmation soit une recette de cuisine et l’ordinateur le chef. Les langages compilés comme C traduisent la recette entière une fois pour toutes en instructions machine. Après cette traduction initiale, le chef exécute directement les instructions. Python, en revanche, agit comme un interprète traduisant à la volée : chaque ligne de code doit être convertie en instructions machine au moment précis de son exécution, payant un coût de traduction à chaque passage.

Deuxièmement, ses variables sont à typage dynamique (« sans étiquette »). En Python, une variable contenant un nombre ou du texte ne déclare pas son type. Chaque fois que le programme y accède, l’environnement d’exécution doit d’abord vérifier de quel type de donnée il s’agit avant de savoir comment la traiter. C’est comme une commode dont aucun tiroir ne porte d’étiquette : il faut ouvrir et vérifier chaque tiroir à chaque fois. Les langages à typage statique possèdent au contraire des tiroirs clairement étiquetés, ce qui permet d’optimiser les accès à l’avance.

Troisièmement, Python souffre du GIL (Global Interpreter Lock), un goulot d’étranglement à voie unique. Pour faire simple, le code Python pur ne permet qu’à un seul thread d’exécuter des instructions à un instant donné. Même si la machine dispose de 32 cœurs de processeur, le code Python pur s’exécute de manière séquentielle — comme une cuisine professionnelle dotée de dizaines de plaques de cuisson mais où un seul cuisinier travaille à la fois.

La combinaison de ces trois facteurs rend Python particulièrement lent sur le terrain du calcul pur. C’est ce qui explique pourquoi presque toutes les bibliothèques scientifiques et d’IA en Python — telles que NumPy ou PyTorch — s’appuient sur du code C/C++ sous le capot. Python joue le rôle d’orchestrateur, déléguant les travaux lourds au C. En d’autres termes, la lenteur perçue de Python est la contrepartie de sa plus grande qualité : privilégier la simplicité de rédaction et la productivité des développeurs au détriment de la vitesse d’exécution brute. Ce compromis a fait le succès de Python pendant trente ans, mais demeure une faiblesse structurelle.

Comment Mojo accélère : Passer sur une toute nouvelle voie

Mojo a été dévoilé par la société Modular en mai 2023. Son cofondateur, Chris Lattner, est le créateur du langage Swift d’Apple et de l’infrastructure de compilateur LLVM. La conception de compilateurs est donc le cœur de métier de l’équipe. La vitesse de Mojo découle du démantèlement méthodique des trois facteurs de lenteur de Python.

Mojo est un langage compilé. Le programme entier est traduit en code machine natif avant son exécution, de sorte que le coût de traduction n’est payé qu’une seule fois. Au-delà de la compilation classique, Mojo s’appuie sur MLIR (Multi-Level Intermediate Representation) comme socle de compilateur. MLIR apporte un second niveau d’optimisation : à partir d’un même code source, le compilateur génère des instructions machine sur mesure pour différentes architectures matérielles — processeurs classiques (CPU), cartes graphiques (GPU) ou accélérateurs dédiés à l’IA. Si la compilation traditionnelle exigeait d’écrire une recette distincte pour chaque type de cuisine, MLIR permet à une seule recette de s’adapter automatiquement à toutes les cuisines.

De plus, Mojo introduit le typage statique et une gestion de la mémoire inspirée de Rust. Le compilateur connaissant les types de données avant l’exécution, il peut effectuer de nombreuses optimisations en amont tout en éliminant une catégorie courante d’erreurs mémoire dès la compilation. Pour les développeurs, la version 1.0 apporte une garantie cruciale : la stabilité de la syntaxe. Le code écrit aujourd’hui ne cassera pas demain, rendant le langage prêt pour des projets de production à long terme.

Il faut aussi compter avec le facteur humain : la syntaxe de Mojo est très proche de celle de Python, ce qui permet aux développeurs Python de l’adopter sans devoir apprendre une langue étrangère. Néanmoins, la feuille de route officielle a évolué au fil du temps : alors que le projet se présentait à l’origine comme un « sur-ensemble complet de Python », la documentation indique désormais que devenir un sur-ensemble parfait « n’est pas garanti ». En pratique, Mojo s’apparente davantage à un nouveau langage d’allure pythonique qu’à un simple « Python plus rapide ».

Sur le plan conceptuel, Mojo réalise son gain de vitesse en changeant complètement de voie : modèle de compilation, système de types et adaptation au matériel ont été repensés de zéro. C’est la logique même du train à grande vitesse : lorsque l’infrastructure ferroviaire change, la vitesse passe dans une tout autre dimension. Le terrain de jeu principal de Mojo est la programmation de puces IA. Aujourd’hui, programmer pour GPU impose généralement d’utiliser CUDA, le langage propriétaire de NVIDIA, ce qui enferme les développeurs chez un seul constructeur. Mojo ambitionne d’offrir une alternative neutre où un seul code s’exécute sur l’ensemble des puces du marché.

Les 35 000x sont réels, mais attention au terrain

Venons-en à la question clé : comment ce chiffre de 35 000x a-t-il été mesuré ?

Cette donnée provient de la démonstration officielle lors de la présentation de Mojo en 2023, basée sur le calcul de la fractale de l’ensemble de Mandelbrot — une boucle mathématique particulièrement dense.

Fractale de l'ensemble de Mandelbrot Image : Fractale de l’ensemble de Mandelbrot — le type de calcul mathématique intensif utilisé pour le test de performance 35 000x. Source : Wikimedia Commons

L’élément de comparaison était du code Python pur écrit avec des boucles imbriquées à la main — précisément le scénario le plus défavorable pour Python en raison du cumul de l’interprétation, du contrôle dynamique des types et de l’exécution monothread. En revanche, dès que Python fait appel à des bibliothèques optimisées en C comme NumPy, l’écart chute de 35 000x à environ 12 fois. Un facteur de 12 reste remarquable, mais il relève d’un ordre de grandeur totalement différent. Ce contexte avait été souligné dès l’annonce initiale par des communautés techniques comme Slashdot.

Qu’est-ce que cela signifie ? Le chiffre de 35 000x n’est pas faux, mais il ressemble davantage à un trophée obtenu sur une épreuve spécifique qu’à une garantie universelle pour toutes les applications. Dans la grande majorité des logiciels du quotidien, les goulots d’étranglement se situent au niveau des accès disque, des temps d’attente réseau ou des requêtes en base de données, où changer de langage n’apporte que des gains minimes. Parmi les 108 commentaires publiés sur Hacker News concernant la version 1.0, de nombreux développeurs ont analysé cette annonce avec recul. Certains ont noté l’absence de banc d’essai comparatif direct avec PyTorch dans l’annonce officielle, soulignant que « ce silence en dit long » ; d’autres ont ironisé sur le label 1.0, plaisantant sur le fait qu’il s’agissait simplement « d’annoncer qu’ils avaient décidé de l’appeler 1.0 à partir de maintenant ».

La vraie bataille d’un nouveau langage : Écosystème, open source et 3,9 milliards de dollars

La vitesse brute n’est que le ticket d’entrée. En trente ans, Python s’est constitué un écosystème massif comptant des dizaines de milliers de bibliothèques éprouvées pour le traitement d’images, l’analyse de données, le web et l’IA. Aussi rapide soit-il, un nouveau langage fait face au coût colossal du transfert de cet écosystème. C’est la douve la plus profonde de Python et l’obstacle le plus difficile pour Mojo.

Les chiffres de la communauté Mojo montrent une dynamique réelle : depuis le passage en open source de sa bibliothèque standard, près de 200 contributeurs ont soumis plus de 1 100 modifications portant sur plus de 200 000 lignes de code. Cependant, le compilateur lui-même reste propriétaire, l’entreprise promettant une ouverture d’ici la fin de l’année 2026. Cela constitue le principal sujet de doute dans les discussions : « Tant que le compilateur n’est pas open source, je ne l’adopterai pas » est une position fréquemment exprimée. De plus, la conférence ModCon organisée par Modular le 18 août à San Francisco est très attendue pour d’éventuelles annonces sur le sujet.

Par ailleurs, un événement financier majeur est intervenu : le 29 juillet 2026, le géant des semi-conducteurs Qualcomm a finalisé le rachat de Modular pour 3,9 milliards de dollars, le fondateur Chris Lattner rejoignant l’équipe dirigeante de Qualcomm. Certains y voient un rachat de talents (« acqui-hire ») au risque de délaisser le produit, tandis que d’autres considèrent cette valorisation comme une validation ferme du marché. Pour les observateurs, cette transaction envoie un signal clair : unifier la programmation sur l’ensemble des puces matérielles possède une valeur commerciale immense.

Conclusion

Il est encore trop tôt pour porter un jugement définitif sur Mojo : la version 1.0 constitue une étape importante, mais ce n’est qu’une halte dans une longue compétition entre langages. La rivalité des langages ne transforme pas du jour au lendemain les logiciels du quotidien. Python ne disparaîtra pas avec l’émergence d’un nouveau venu, car il est devenu le socle du monde des données et de l’IA. La réussite de Mojo dépendra de sa capacité à faire grandir son écosystème dans les deux ans à venir et à tenir ses engagements en matière d’open source.

Pour les lecteurs non développeurs, le véritable enseignement réside dans l’esprit critique : face à des annonces spectaculaires comme « 35 000 fois plus rapide », il convient toujours de demander — dans quelles conditions précises, par rapport à quoi et sur quel type de tâche ? Le contexte derrière les chiffres de benchmark est presque toujours plus instructif que les chiffres eux-mêmes.

Liens de référence :

  • Blog officiel de Modular : Modular 26.5: Mojo 1.0 is here!
  • Discussion Hacker News : Mojo 1.0 (item id 49261128)
  • Article Wikipédia : Mojo (programming language)
  • Premières couvertures Slashdot : Discussions de la communauté sur l’annonce de Mojo et le chiffre 35 000x
  • Articles de presse concernant l’acquisition de Modular par Qualcomm pour 3,9 M$