IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Python, un langage plaisant mais inefficace pour la plupart des projets professionnels,
Selon Jos Visser, ingénieur principal chez Amazon

Le , par Bruno

40PARTAGES

18  1 
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 ?

L'analyse de Jos Visser est-elle pertinente ?

Comment Jos Visser explique-t-il la popularité continue de Python malgré ses supposés défauts ?

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 :

99% des principaux paquets Python sont maintenant des wheels, ce qui rendra plus rapide l'installation pour les paquets purement Python

Microsoft vient d'annoncer les améliorations Juillet 2023 de l'extension Python pour Visual Studio Code

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

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de defZero
Membre extrêmement actif https://www.developpez.com
Le 05/08/2023 à 0:07
Phrase d'accroche :

Python, un langage plaisant mais inefficace pour la plupart des projets professionnels,
selon Jos Visser, ingénieur principal chez Amazon
vs Conclusion :

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.
La divergence de la conclusion par rapport à l'énoncé de départ me dérange .

Comparer des langage si différent, ça me fait toujours sourire.
Mais pour rappelle :
  1. Python = langage interprété, fortement & dynamique typé (inférence de type à la 1er affectation et pour sa durée de vie).
    Honnêtement, c'est un langage plutôt simple, à la syntaxe constante mais si je devais faire de la performance , j'oublierais l'idée sauf à ce qu'un module coder en natif existe pour ma plateforme cible.
  2. Rust = langage compilé (AoT), fortement & statiquement typé, avec contrôle des accès mémoire par propriété (pour empêcher/limiter les datas race) et de durée de vie (pour empêcher les débordements/fuite mémoire) à la compilation.
    Avec Rust, le dilemme est plus complexe étant donner qu'il peut ce permettre un panel d'utilisations que les autres langages, compilé nativement, ont rarement avec toutes ses qualités.
    Dans ses possibilité d'abstraction il serait au niveau du Java/C#, mais avec les capacités du C/C++ accoler.
  3. C, C++ = langage compilé (AoT), faiblement & statiquement typé (proche de la machine quoi).
    Sauf à faire du bas niveau en voulant s'épargner un max d'assembleur pour un minimum de portabilité, je le conseillerais à personne en 2023 au vu des alternatives (manque juste de maturité pour les alternatives, mais elles ont le mérite d'existées).


Si je devais faire un site simple, j'utiliserais PHP (loin d'être le langage le plus élégant/cohérant de l'histoire), mais je pourrais tout à fait le coder en C/C++ pour faire un "cgi".
Le problème est de savoir si c'est pertinent dans mon cas.
En effet qui va payer pour le temp que ça va me prendre pour avoir au final le même résultat, sachant que 99% d'internet n'est pas les GAFAM est n'a pas leurs problématiques de perf, conso, gestion des ressources ?
Et puis si demain je change de poste, bonne chance pour debugger/augmenter des "cgi" en C/C++ bien touffu .

Conclusion, s'il existe autant de langages, c'est bien qu'il existe autant de besoins différents à combler.
15  0 
Avatar de wiztricks
Expert éminent sénior https://www.developpez.com
Le 04/08/2023 à 16:58
Salut,

Techniquement, il est difficile de comparer Rust à C++ mais pas à Python car on n'écrira pas les mêmes applications avec. Et je trouve le bonhomme un peu de mauvaise foi car beaucoup d'efforts ont été fait côté typage et analyse statique de code permettant à Python d'être utilisable dans des projets industriels.
Ceci dit pour les applications à mission critique, on préfèrera des langages encore plus robustes que Rust.

Maintenant il est clair que l'industrie informatique privilégie en général les coûts.
De ce fait, tout programmer avec un seul langage est un atout (pour moins bien payer les programmeurs puisqu'on en trouvera plein...)
Ses critiques contre un langage de programmation dominant ne sont pas nouvelles... A d'autres époques, on a connu java, php, basic... difficile de trouver du boulot sans les connaître.

Mais on adresse alors plutôt la myopie de nombre de décideurs car techniquement on ne va jamais utiliser le même langage pour tout.

- W
8  0 
Avatar de N_BaH
Modérateur https://www.developpez.com
Le 04/08/2023 à 23:53
au-delà de la polémique facile («ce langage général n'est pas adapté aux cas particuliers»), ne s'agit-il pas de faire la promotion de rust* ?

--
* en vogue : le noyau Linux l'intègre, et pourrait, à terme, être totalement réécrit dans ce langage.
?
5  0 
Avatar de binarygirl
Membre chevronné https://www.developpez.com
Le 04/08/2023 à 21:09
C'est l'éternel débat langage compilé/interprété.
Mais à mon avis, on en revient aux tests. Le code défaillant est du code non suffisamment testé.
Et le manque de compétence du programmeur, que le langage ne peut pas résoudre.

Si on regarde les choses posément, quelle est la part des problèmes de typage dans les programmes défaillants ? D'expérience, j'ai pas l'impression que c'est le souci principal.
Les langages compilés ne sont pas à l'abri d'autres problèmes, comme les erreurs de logique. Un langage compilé ne garantit pas la rigueur.

On pourrait certes argumenter que les langages comme PHP, Python etc sont abordables pour les débutants, et donc il est courant de trouver du code de mauvaise qualité, ce qui explique le mauvais retour d'expérience dans le cas présent.

Citation Envoyé par Pyramidev Voir le message

Effectivement, tel que Jos Visser a formulé son article, il ne semble pas au courant de l'existence du typage statique optionnel en Python, qui existe pourtant depuis longtemps.
Si on parle du type hinting, des annotations, il me semble que ça ne change pas le fait que Python reste dynamiquement typé et alors ce n'est pas du vrai typage statique au sens où ça existe dans d'autres langages. Mais on peut quand même utiliser des outils comme MyPy pour tester la cohérence du code. Et un bon IDE devrait déjà attirer l'attention sur certains problèmes.

Pour ce qui est des fuites mémoire, on peut utiliser un outil comme Valgrind. Idéalement, toutes ces batteries de tests devraient être mises en place dans une chaîne CI/CD, ce qui prend du temps.
5  1 
Avatar de chris_FR
Membre régulier https://www.developpez.com
Le 06/08/2023 à 9:54
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é
4  0 
Avatar de wiztricks
Expert éminent sénior https://www.developpez.com
Le 06/08/2023 à 22:51
Citation Envoyé par binarygirl Voir le message
Mais il y a sûrement un paradoxe: s'il y a une demande relativement forte pour un langage, fut-il méprisé comme PHP ou Python, c'est à se demander si les employeurs qui sont derrière cette demande font du développement professionnel
C'est aussi un problème de marché. On peut avoir des artisans de la programmation répondant aux besoins spécifiques de petites boites qui passent complétement sous les radars des SSII (ça ne les intéresse pas car ce sont de petits projets très risqués). Et on se retrouve avec des applications en production testées par la bonne volonté des utilisateurs (ça sera pas des tests d'intégration continues ni des plan de tests et pour la revue de code, il n'y a personne) et qui seront pérenne tant que l'artisan qui les a réalisé ne mette pas la clé sous la porte et/ou parte à la retraite.

Est ce que c'est un problème? Il y a toujours eu 2 grandes écoles pour la gestion d'un système d'information: on sous traite tout à des IBM ou des microsoft (c'est cher) ou on a des gens très compétents qui font ou encadrent le gros du boulot en interne ou étant très proches. C'est moins cher et plus agile, le risque est dans la gestion de ces compétences dans la durée et les frictions qu'ils pourront avoir avec les directions métiers.

Ce qui est sûr, c'est qu'aussi bien pour les langages que pour les compétences, il faut rechercher un équilibre... et le problème est multifactoriel: ce qui va marcher pour l'un sera catastrophique pour d'autres.

- W
4  0 
Avatar de wiztricks
Expert éminent sénior https://www.developpez.com
Le 05/08/2023 à 9:38
Citation Envoyé par N_BaH Voir le message
au-delà de la polémique facile («ce langage général n'est pas adapté aux cas particuliers»), ne s'agit-il pas de faire la promotion de rust* ?
Python n'est pas adapté à tout. C'est une réalité technique.

Après on a une réalité économique qui va de trouver des programmeurs qui pourront coder avec le langage X ou Y à combien ils vont coûter en passant par la qualité de ce qu'ils pourront produire.

--
Citation Envoyé par N_BaH Voir le message
* en vogue : le noyau Linux l'intègre, et pourrait, à terme, être totalement réécrit dans ce langage?
On a le droit de rêver.... mais ré-écrire un code qui marche dans un autre langage parce qu'il est mieux n'a aucun intérêt: çà coute très cher et ça n'apporte pas grand chose côté nouvelles fonctionnalités. Une telle migration prendra des années et d'ici là, peut être que Rust aura été remplacé par un autre langage à la mode.
note: par contre voilà un exemple de ce qu'on ne peut pas coder avec Python.

- W
3  0 
Avatar de gzii69
Membre régulier https://www.developpez.com
Le 05/08/2023 à 11:34
Pour le fait que Rust ne soit pas plus performant que le C++ ?

En tout cas il ne l’est pas moins.
J’ai porté un serveur de comptage que j’avais fait en C++ vers Rust et il avait des perfs du même ordre (plus rapide dans mon cas mais c’est difficile à évaluer sans de nombreux tests et sans doute de petites optimisations des deux côtés).
Et surtout je l’ai modifié pour qu’il soit multi-threads avec connexion par socket en souffrant un peu pour trouver comment faire, mais avec un résultat qui s’est révélé fiable pour la production dès le début.

Pour python, avec les bonnes bibliothèques c’est bien pratique pour mettre en place des chaînes de traitements, avec Pandas ou Polars par exemple on peut faire du traitement de données assez lourd.
3  0 
Avatar de Pyramidev
Expert éminent https://www.developpez.com
Le 04/08/2023 à 19:44
Citation Envoyé par wiztricks Voir le message
Techniquement, il est difficile de comparer Rust à C++ mais pas à Python car on n'écrira pas les mêmes applications avec.
Des fois, si. Au fur et à mesure que l'écosystème de Rust progresse, il y a de plus en plus de code Python pour lequel Rust devient une alternative crédible.

Par exemple, Python est utilisé dans plusieurs entreprises pour du développement web backend, par exemple avec Django et FastAPI. Rust a aussi des crates qui ont le même rôle que FastAPI, les plus populaires étant axum et Actix Web. Pour les interactions avec les bases de données, il y a aussi des crates dédiés.

À part ça, dans le tooling et les packages Python, Rust progresse. Par exemple, Pydantic V1 était écrit en pur Python et compilé avec Cython, tandis que Pydantic V2 contient du Rust dans son implémentation (via pydantic-core) pour augmenter les performances.

Citation Envoyé par wiztricks Voir le message
Et je trouve le bonhomme un peu de mauvaise foi car beaucoup d'efforts ont été fait côté typage et analyse statique de code permettant à Python d'être utilisable dans des projets industriels.
Effectivement, tel que Jos Visser a formulé son article, il ne semble pas au courant de l'existence du typage statique optionnel en Python, qui existe pourtant depuis longtemps.

En pratique, les développeurs Python, utilisent-ils les annotations de type quand il est pertinent de les utiliser ? Des fois oui, des fois non. Cela dépend qui code. J'ai vu les deux cas.
2  0 
Avatar de wiztricks
Expert éminent sénior https://www.developpez.com
Le 04/08/2023 à 23:33
Salut,

Citation Envoyé par Pyramidev Voir le message
Des fois, si. Au fur et à mesure que l'écosystème de Rust progresse, il y a de plus en plus de code Python pour lequel Rust devient une alternative crédible.
Tant mieux si ça crée une compétition qui fait progresser...

Citation Envoyé par Pyramidev Voir le message
En pratique, les développeurs Python, utilisent-ils les annotations de type quand il est pertinent de les utiliser ? Des fois oui, des fois non. Cela dépend qui code. J'ai vu les deux cas.
Pour moi, python restera un langage de scripting à utiliser avec discernement(*). Et je ne vois pas trop l'intérêt des annotations pour ce que j'attends de Python. J'en comprends l'intérêt pour la gestion/contrôle d'un travail d'équipe et le développement plus fiable de gros projets.
Dans la pratique, ce ne sont que des outils de gestion du risque, une assurance qualité... et ça ne fait pas tout (et de loin).

(*)Je parle là des programmeurs professionnels pas d'étudiants à qui on apprend à programmer pour l'intérêt du cheminement programmatique ou les rassurer dans l'utilisation de cet outil dans différents aspects d'un boulot technique.
Que des décideurs embauchent ce genre de profils pour écrire de vrais programmes pas cher (et assez pourris) n'est pas un sujet technique.

- W
2  0