Le problème de vitesse de Python, enfin résolu ?
Python règne en maître pour le développement rapide, mais son talon d'Achille reste la performance. Les data scientists et les ingénieurs ML lancent régulièrement des projets en Python, pour finalement se heurter à un mur lorsque la vitesse brute devient primordiale. Cela impose un système fragile à deux langages où les composants critiques sont réécrits en C++ ou CUDA, créant des casse-têtes de maintenance à mesure que ces bases de code distinctes divergent inévitablement.
Mojo promet de résoudre ce dilemme fondamental. Sa vision centrale : un langage unique, semblable à Python, qui compile pour une haute performance à la fois sur CPU et GPU. Cela unifierait l'ensemble du flux de travail de développement, éliminant le besoin de changer de paradigme ou de langage selon les cibles d'exécution. C'est une promesse audacieuse, visant à offrir la vitesse du C avec l'expérience de développement renommée de Python.
La preuve la plus convaincante arrive rapidement. Sur un MacBook standard, démontrer les capacités de Mojo implique de compiler un noyau GPU fonctionnel avec un code remarquablement simple et lisible. Ce n'est pas théorique ; le langage exécute une fonction accélérée par GPU, additionnant des paires de nombres, sans recourir à Metal, Swift ou CUDA. C'est un "moment magique" tangible qui valide la promesse d'un sur-ensemble de Python véritablement unifié et haute performance.
Déconstruction du mythe de la vitesse 68 000x
Oubliez le battage médiatique viral. Les affirmations initiales de Mojo concernant des accélérations de 35 000x, voire 68 000x, sont au mieux trompeuses, au pire malhonnêtes. Ces chiffres astronomiques proviennent de la comparaison d'un code Mojo entièrement vectorisé et parallélisé avec une boucle Python triple imbriquée ridiculement naïve. Aucun développeur professionnel n'écrirait jamais une telle implémentation Python non optimisée pour des tâches critiques en termes de performance, rendant ces comparaisons non pertinentes.
Des benchmarks plus réalistes, réalisés sur un M4 Pro, dressent un tableau plus clair. Mojo démontre une vitesse respectable d'environ ~26,5x plus rapide que le Python pur. Plus important encore, il est environ 2x plus rapide que NumPy, une bibliothèque fondamentale pour la pile de calcul scientifique de Python. Cette distinction est vitale ; 26,5x est impressionnant, mais loin des chiffres mythiques initialement annoncés.
Surpasser NumPy est le véritable titre de gloire de Mojo. NumPy lui-même repose sur du code C compilé hautement optimisé pour ses opérations de base. Mojo ne se contente pas de battre Python ; il surpasse le C éprouvé. Cela suggère que Mojo atteint son avantage grâce à une gestion de la mémoire supérieure et des optimisations de compilateur sophistiquées, dépassant même le code hérité hautement optimisé.
Qualcomm, Open Source et timing suspect
Un calendrier très inhabituel et compressé assombrit les récents jalons de Mojo et exige un examen immédiat. Qualcomm a finalisé son acquisition de Modular le 29 juillet. À peine deux semaines plus tard, le 11 août, Mojo 1.0 était publié — avec son compilateur principal restant notablement fermé. Puis, dans un revirement stupéfiant seulement sept jours plus tard, le 18 août, le compilateur a été brusquement rendu open-source. Cette succession rapide d'événements, après l'acquisition, est tout sauf typique.
Deux récits radicalement différents émergent de ce timing suspect. Est-ce Qualcomm qui pousse agressivement pour l'adoption rapide de Mojo, en supprimant stratégiquement la plus grande barrière à l'entrée pour les développeurs (sa nature propriétaire) ? Ou, plus inquiétant encore, cela signale-t-il la phase initiale d'une absorption corporative plus large, où la technologie innovante de Modular pourrait bientôt être subsumée, sa trajectoire à long terme et son avenir indépendant étant désormais profondément incertains sous un géant de l'industrie ?
Bien que le passage à une licence Apache 2.0 soit indéniablement une victoire majeure pour la transparence et soit certainement bien accueilli par la communauté des développeurs, un astérisque critique persiste. Modular a explicitement déclaré ne pas encore accepter de contributions externes au compilateur. Cette limitation cruciale signifie que, bien que le code source soit visible, le projet reste en réalité source-available plutôt qu'une initiative véritablement axée sur la communauté, entravant le développement collaboratif dont Mojo a besoin pour prospérer. De plus amples détails sur le langage sont disponibles sur Mojo.
Cet article vous plaît ? Recevez-en un comme celui-ci chaque matin.
un e-mail par jour · désinscription en deux clics · aucun traqueur tiers
Les 41 failles de la version « stable » de Mojo
La version 1.0 de Mojo a été déclarée comme une étape importante en matière de stabilité, pourtant elle a été livrée avec une contradiction flagrante. Cette base supposément « stable » incluait 41 avertissements d'API instables, signalant des fonctions intégrées fondamentales comme int, print et len. Marquer des composants essentiels du langage comme instables lors d'une version majeure n'est pas seulement un oubli ; c'est une remise en cause profonde de la promesse même de stabilité.
Érodant davantage la confiance, le mot-clé fn central a été complètement supprimé. Ce changement radical, affectant des dizaines de paquets, est survenu le jour même où Mojo s'est engagé à assurer la stabilité de son API, le tout sans processus de dépréciation approprié. Un tel mépris désinvolte pour l'écosystème de développeurs existant est un signal alarmant pour tout langage visant une adoption large en production.
Pour les développeurs de kernels GPU, Mojo offre une proposition réellement convaincante, méritant certainement quelques jours d'expérimentation. La vision d'un langage unifié entre CPU et GPU est unique et puissante. Cependant, pour la communauté des développeurs au sens large, les problèmes de stabilité flagrants de Mojo et les questions de gouvernance opaques entourant sa récente acquisition par Qualcomm en font un pari à haut risque. Ce langage nécessite une maturation significative avant de pouvoir être considéré comme un choix fiable pour la production.
Foire aux questions
Qu'est-ce que le langage de programmation Mojo ?
Mojo est un langage de programmation créé par Modular. Il est conçu pour être un sur-ensemble de Python, combinant la facilité d'utilisation de Python avec les hautes performances de langages système comme C++ et CUDA, principalement pour l'IA et le calcul haute performance.
À quel point Mojo est-il plus rapide que Python ?
Bien que les premières campagnes marketing aient revendiqué des accélérations de 35 000x ou plus, celles-ci étaient basées sur des comparaisons déloyales. Les tests en conditions réelles montrent que Mojo est environ 26,5 fois plus rapide que Python pur et environ 2 fois plus rapide que le code NumPy hautement optimisé pour des tâches spécifiques.
Mojo est-il vraiment open source ?
Oui. Depuis août 2024, le compilateur Mojo, la bibliothèque standard et les composants principaux sont open source sous licence Apache 2.0. Cependant, le projet n'accepte pas encore de contributions externes au compilateur lui-même.
Mojo 1.0 est-il assez stable pour la production ?
Malgré son numéro de version '1.0', Mojo présente actuellement des problèmes de stabilité significatifs. La version initiale incluait des dizaines d'avertissements d'API instables pour des fonctions essentielles et a introduit des changements radicaux, ce qui en fait un choix risqué pour la plupart des environnements de production aujourd'hui.

