Meilleure réponse
Regardez ce mème python
Réponse
Quelques raisons:
- À un certain moment, le cerveau humain ne peut percevoir aucune amélioration de la vitesse. Si je ré-implémente mon code Python en C et quil sexécute 200 fois plus vite, lutilisateur ne remarquera même pas si le code dorigine a déjà été exécuté en 0,01 seconde. Heck, ils ne remarqueront probablement même pas si le code dorigine ne fonctionnait quen 0,1 secondes. La différence entre 0,1 seconde et 0,0005 seconde est effectivement imperceptible pour la plupart des gens. Même pour les personnes qui peuvent réellement le discerner, il semble complètement banal.
- Sa lenteur dépend en grande partie de la façon dont vous l’utilisez. Le vrai problème est que de nombreuses personnes souffrent du problème de loptimisation prématurée. Oui, Python est lent, mais il est probable que votre code ne soit pas vraiment lent à cause de Python; il est lent parce que votre code utilise les mauvaises structures de données et algorithmes pour résoudre un problème donné. Lutilisation dun langage compilé comme C ne fait que masquer le problème. Oui, cest plus rapide, mais cest seulement plus rapide avec un algorithme inefficace. Lutilisation des structures de données et des algorithmes appropriés sera mise à léchelle, peu importe le langage dans lequel vous les implémentez et quelle que soit la quantité de données que vous utilisez. un langage plus rapide ne créera que des gains à court terme. Un algorithme O (n!) est toujours un algorithme O (n!), même si vous limplémentez en C! Les ingénieurs vraiment bien informés le savent et peuvent créer des applications plus que suffisamment rapides et qui sadaptent bien, quel que soit le langage dimplémentation, car ils utilisent les bonnes structures et algorithmes.
- Python a été (et continuera probablement à être) avant tout un langage «glu»; il est très bon pour connecter des logiciels qui nétaient pas dorigine lly destiné à travailler directement les uns avec les autres. Il est également efficace pour automatiser des tâches qui seraient normalement effectuées à la main. À ces fins, cest plus quassez rapide, puisque le travail principal se déroule de toute façon ailleurs. Pour les langages « plus rapides » comme le C, ce type de travail de collage est si douloureusement lent et sujet aux erreurs de code quil ne vaut même pas la peine. Les gains de vitesse dexécution sont plus que compensés par le temps perdu par les développeurs pour le faire fonctionner. Cest lune des principales raisons pour lesquelles il continue dêtre si populaire.
- Certains goulots détranglement sont tout simplement hors du contrôle direct du langage dimplémentation. IO est courant. Je travaille actuellement avec une application où tout en Python est plus que suffisamment rapide. Ce nest que lorsque nous accédons au réseau pour interroger la base de données que les choses ralentissent. Mon profilage montre que même les morceaux les plus lents du code Python sont complètement insignifiants par rapport au temps passé à attendre sur le réseau IO. Jessaie maintenant de trouver des moyens de moins frapper la base de données (mise en cache côté client, évitant toute vérification de cohérence redondante par rapport aux données, etc.). Même si jécrivais lapplication en assembleur, ce serait toujours un problème. Résoudre ce problème avec Python est en fait plus rapide et plus facile car il est livré avec des bibliothèques de profilage (très robustes) dans la bibliothèque standard. De nombreux langages compilés « rapides » ne sont traditionnellement pas fournis avec cela.
La morale de lhistoire est: le temps du développeur lemporte sur le temps de la machine, presque toujours. Quand cela ne lest pas. tenir, la lenteur est généralement identifiable à certains goulots détranglement qui peuvent être optimisés assez facilement dans une bibliothèque ou un service externe. Les moments où quelque chose ne peut vraiment pas être optimisé dans une bibliothèque ou un service externe sont incroyablement rares. Comme dans, presque inexistant.
Une exception est si vous savez dès le départ que votre application a besoin aussi proche que possible des performances en temps réel et la majorité du code sera centrée sur le calcul. Un bon exemple est les jeux vidéo ou les applications DCC. Il vaut mieux être aussi proche que possible du temps réel, sinon vous n’aurez pas d’utilisateur base à proprement parler.
Cependant, à moins que ce ne soit le cas, de nombreux développeurs préfèrent les gains de productivité de Python, même si ce nest que pour le prototypage.