Je viens de commencer à apprendre Python et j'aimerais obtenir un peu plus de contexte sur le langage.
Je me rends compte que, dans de nombreux cas, Python est un langage lent par rapport à C ou C ++. Ainsi, Python n'est probablement pas le meilleur choix pour les applications qui doivent s'exécuter aussi rapidement que possible.
En dehors de cela, il semble que Python soit un excellent langage généraliste facile à lire et à écrire. Les bibliothèques disponibles lui donnent une énorme quantité de fonctionnalités. En dehors des applications critiques pour les performances, où est-ce un mauvais choix d'utiliser Python (et pourquoi)?
Réponses:
Logiciel destiné aux cibles intégrées avec leurs ressources limitées. La plupart des processeurs de cette planète ne peuvent pas exécuter Python en raison de ressources insuffisantes, ou personne n'a porté de version sur cette architecture. La plupart des processeurs, même maintenant, sont livrés avec moins d'un mégaoctet de mémoire.
la source
Les deux endroits qui me viennent à l'esprit sont des choses qui nécessitent beaucoup de simultanéité, pour lesquelles j'utiliserais Erlang. Ou un calcul numérique robuste, que j'essaierais probablement d'utiliser Fortran.
la source
Étant donné que Python est un langage à typage dynamique, sans vérification à la compilation, la refactorisation d'un grand projet Python qui n'a pas de tests unitaires étendus sera difficile.
Donc, si vous avez un grand projet qui doit être maintenu et modifié pendant une longue période, et que votre équipe ne s'engage pas à créer des tests automatisés pour tout, alors vous feriez mieux d'utiliser Java ou C #.
la source
Si l'objectif principal est le développement de l'interface graphique de Windows, je recommanderais contre CPython car il y a une pénurie de bons concepteurs de formulaires (par rapport à l'utilisation de .Net).
Cependant, IronPython fonctionne sur .Net et vous avez le choix entre deux IDE avec des concepteurs de formulaires: Visual Studio et SharpDevelop. En fait, les outils Python pour Visual Studio peuvent être utilisés pour CPython ainsi que IronPython, ce qui est plutôt bien, même si je ne l'ai pas encore essayé ...
la source
Cela dépend vraiment de ce que vous entendez par «mauvais choix».
Si vous voulez dire des applications où l'utilisation de Python est très difficile, alors il y en a relativement peu: la principale qui vient à l'esprit et qui n'a pas encore été mentionnée est le code nécessitant des niveaux élevés de correction où les langages avec des systèmes de types sophistiqués (Haskell, langages typés de manière dépendante) ) sont de meilleures options.
Si vous voulez dire des applications où Python est sous-optimal (c'est-à-dire qu'il y a de meilleurs choix) alors il y en a plus mais elles sont aussi plus subjectives. Par exemple, dans mon expérience certes limitée, travailler sur des compilateurs et des interprètes est beaucoup plus facile avec des types de données algébriques, des correspondances de modèles et des fonctionnalités plus fonctionnelles que Python. Cependant, il n'est pas possible de lister de manière exhaustive des applications comme celle-ci, car elles varient par personne.
la source
Il est idéal pour écrire rapidement quelque chose en raison de sa capacité expressive et de sa grande variété de bibliothèques de support.
La vérification de type dynamique et le manque de déclaration explicite des variables en font un mauvais choix pour les grands projets impliquant des centaines de milliers, voire des millions de lignes de code. La même chose vaut pour les systèmes critiques ou critiques pour la sécurité. Dans un système avionique, par exemple, il serait totalement inacceptable qu'un système tombe en panne en raison d'une erreur qui aurait pu être détectée au moment de la compilation.
la source
Eh bien, tout comme vous, je commence également avec Python. Mais pour moi dans le contexte de l'apprentissage automatique et de la science des données.
Je viens également d'acquérir toutes les nouvelles connaissances de Java 8 et de ses nouvelles bibliothèques orientées flux.
J'ai vraiment adoré la fluidité des nouvelles bibliothèques de flux Java 8 et la proximité avec les bibliothèques Spark d'Apache. Quand je suis entré en Python, je m'attendais à la même chose et plus encore.
J'en ai vu plus. Mais beaucoup moins. Mauvaise documentation, bien qu'il y en ait eu beaucoup; pas de fluidité, et en fait je devais deviner si une méthode régnait sur un nouvel objet, ou opérait sur cela; rien près d'une carte / réduire etc. J'ai été surpris d'être déçu.
Mais depuis le début, je ne m'attendais pas beaucoup à la facilité avec laquelle il allait être possible d'apprendre la langue. J'ai trouvé que j'avais raison: incohérent, peu intuitif, difficile à apprendre. Mais c'était juste mon expérience d'être assez bon dans tout ce que Java aime.
la source