1 pièce(s) jointe(s)
Python, un langage plaisant mais inefficace pour la plupart des projets professionnels
Python, un langage plaisant mais inefficace pour la plupart des projets professionnels,
selon Jos Visser, ingénieur principal chez Amazon
Jos Visser, ingénieur principal chez Amazon, critique le choix de Python comme langage de programmation pour les développeurs débutants. Il affirme que Python est un langage interprété, dynamique et qui ne garantit pas la sécurité du type ni la fiabilité du code. Il raconte ses expériences négatives avec de grandes applications Python, qui ont généré des erreurs et des exceptions imprévisibles. Visser soutient que Python est inadapté à la plupart des usages professionnels et qu’il faut lui préférer des langages compilés et sûrs du point de vue du type, comme Rust. Il donne l’exemple d’une réécriture réussie d’un système en Rust, qui a amélioré la performance et la stabilité de l’application.
Jos Visser, ingénieur principal chez Amazon, exprime son opinion négative sur Python, un langage de programmation très populaire. Il explique pourquoi il pense que Python est inutile pour la plupart des usages professionnels et qu’il faut lui préférer des langages plus adaptés. Il commence par réagir à un post LinkedIn qui conseillait aux développeurs débutants d’apprendre Python pour trouver un emploi. Il reconnaît que Python est un langage très demandé, mais il affirme que c’est un problème qui freine le progrès de l’industrie informatique. Il se base sur son expérience personnelle avec de grandes applications écrites en Python, qu’il compare à des réacteurs nucléaires construits avec des briques Lego. Il décrit les difficultés et les risques liés à la maintenance et à l’évolution de ces applications, qui sont souvent instables et imprévisibles.
Il identifie le problème principal de Python comme étant son caractère interprété, dynamique et en canard. Il explique que cela signifie que le code Python n’est pas vérifié avant l’exécution et qu’il peut produire des erreurs ou des exceptions selon les données qu’il reçoit. Il souligne que cela impose aux développeurs d’avoir une discipline rigoureuse pour contrôler toutes les données d’entrée, ce qui est rarement le cas dans la pratique. Il critique également le typage en canard de Python, qui permet d’écrire du code intelligent mais inutile, qui se retourne contre les développeurs.
Il raconte ses expériences négatives avec de grosses applications Python, qui ont généré des erreurs et des exceptions imprévisibles. Il donne l’exemple d’une application qui lançait du code qui n’avait jamais été testé ni exécuté auparavant. Il dit qu’il a réussi à convaincre son organisation de réécrire son système en Rust, un langage compilé et sûr du point de vue du type, qui a amélioré la performance et la stabilité de l’application.
Il conclut en réfutant l’argument selon lequel le problème ne vient pas de Python, mais de la stratégie de révision et de test du code. Il affirme que c’est une illusion de penser qu’il est possible d’examiner et de tester toutes les possibilités du code Python. Il défend la valeur d’un bon langage de programmation, qui garantit qu’un grand nombre d’erreurs ne peuvent pas se produire. Il suggère donc aux développeurs débutants de choisir un langage plus fiable et performant que Python pour leurs projets professionnels.
Les forces et les faiblesses de Python et de Rust pour la programmation système et l’apprentissage automatique
Python est un langage de programmation puissant qui offre de nombreux avantages, mais il faut aussi considérer plusieurs aspects quand on le compare à Rust pour la programmation système. Python est le langage préféré de beaucoup de développeurs, car il dispose d’un large éventail de bibliothèques, d’outils et de frameworks. Le langage conçu par Guido van Rossum a un écosystème riche, avec des bibliothèques performantes (comme NumPy, Pandas, scikit-learn) et des frameworks de ML éprouvés (comme TensorFlow, PyTorch) qui le rendent très productif pour le développement de modèles d’apprentissage automatique.
Python est aussi un langage lisible et facile à utiliser, qui permet de prototyper, d’expérimenter et d’itérer rapidement, ce qui est essentiel dans les premières phases du développement. La communauté Python fournit de nombreuses ressources, tutoriels et forums dédiés à l’apprentissage automatique, ce qui facilite la résolution de problèmes courants et la collaboration avec d’autres praticiens.
Par contre, Rust a des contrôles stricts à la compilation et des caractéristiques de sécurité de la mémoire qui le protègent des erreurs de programmation fréquentes comme les pointeurs nuls, les débordements de mémoire tampon et les courses de données. Ce niveau de sécurité peut être crucial lors du déploiement des projets professionnels en production, en assurant la stabilité et en réduisant le risque d’erreurs d’exécution ou de plantages. Rust est aussi interopérable avec C et Python, ce qui permet une intégration facile avec les bases de code Python existantes.
En conclusion, Rust a des avantages indéniables en termes de performance, de sécurité et de concurrence, mais Python a un écosystème étendu, une facilité d’utilisation, une vaste gamme d’outils et le soutien de la communauté qui en font un choix solide pour construire et déployer des projets professionnels.
Sources : Jos Visser's blog post, Karun Thankachan's blog post
Et vous ?
:fleche: L'analyse de Jos Visser est-elle pertinente ?
:fleche: Comment Jos Visser explique-t-il la popularité continue de Python malgré ses supposés défauts ?
:fleche: Quels sont les avantages et les inconvénients de Python par rapport à des langages compilés et sûrs du point de vue du type, comme C++, Java ou Go ?
Voir aussi :
:fleche: 99% des principaux paquets Python sont maintenant des wheels, ce qui rendra plus rapide l'installation pour les paquets purement Python
:fleche: Microsoft vient d'annoncer les améliorations Juillet 2023 de l'extension Python pour Visual Studio Code
:fleche: Python 3.12.0b1, la première des quatre versions bêta de la 3.12, a été publiée et apporte de nouvelles fonctionnalités ainsi que des corrections de bogues
Un mauvais ouvrier a toujours de mauvais outil ...
Je ne comprends pas les propos de ce monsieur,
Le terme "projets professionnels" est beaucoup trop vaste, il faudrait d'abord définir le type de projet
Il sera difficile de faire avec Rust ce que l'on peu faire avec Django et Python
tout comme il sera difficile d'écrire un OS en python
Avec Python, tout comme Rust, de bons développeurs sont capable de produire un projet professionnel
et de mauvais dev feront de mauvais logiciel ... c'est valable pour n'importe quel langage :)
Par contre python permettra a plus de personnes de s'intéresser au développement, alors que Rust risque de rebuter certains même sur un "hello world"
une des forces de python est son accessibilité et sa lisibilité alors que Rust est plus robuste et sécure admettons ...
Rust aura de meilleur performance, un code plus sur c'est évident, mais encore faut il que les devs codent avec cohérence et bon sens, un mauvais code reste un mauvais code quelque soit le langage.
A mon avis Rust sera certainement beaucoup moins souple et agile que python avec son langage fortement typé ... mais dans la vie il faut savoir ce que l'on veut ;)
Je pense que cette personne aimerait n'avoir qu'un seul langage à gérer pour couvrir tout les cas de figures :) pour se simplifier la vie
ce qui est totalement illusoire et à mon avis contre productif
Il devrait licencier toute son équipe technique et n'utiliser que chatGPT , bard ou BedRock :) comme cela il verra la différence ...
Ce genre de personne me fait penser à certains octogénaire regroupés dans un petit pays avec un natalité nulle, qui ont fait vœux de chasteté, et qui se permette de donner des leçons aux monde entier sur la sexualité :)