Un guide du développeur sur les avantages et les inconvénients de Python

Python est présenté par la Python Software Foundation comme étant facile à apprendre et à exécuter partout. Il est utile pour une gamme de types d'applications, y compris le développement Web, l'informatique scientifique et l'éducation. Google et Instagram font partie des nombreux utilisateurs de Python, et le langage se classe bien dans les index de popularité.

Mais Python a eu ses problèmes, avec des questions soulevées sur ses performances et ses bizarreries de conception. Pour aller au fond de ce qui est juste - et peut-être pas si juste - à propos de Python, le rédacteur en chef Paul Krill a demandé à des dignitaires de la communauté Python leur contribution.

Les pros de Python

Lisez-le, utilisez-le facilement. «La principale caractéristique d'un programme Python est qu'il est facile à lire», explique Pierre Carbonnelle, un programmeur et blogueur Python qui exécute l'index du langage PyPL. "Cela a des avantages pour vous et pour les autres. Cela vous aide à penser plus clairement lors de l'écriture de programmes, et cela aide les autres qui vont maintenir ou améliorer votre programme. Dans les deux cas, il faut moins d'efforts pour écrire un programme Python que pour en écrire un. dans un autre langage comme C ++ ou Java. " La lisibilité de Python facilite le développement open source, a ajouté Carbonnelle.

Python est facile à utiliser et extrêmement populaire dans le milieu universitaire, créant un grand vivier de talents, explique Sumit Chachra, CTO chez Tivix, une société de conseil en logiciel spécialisée dans le développement Python / Django. Django et Python sont exploités par Tivix dans le développement Web et mobile, dit-il.

Python est un moyen très productif d'écrire du code, explique Stephen Deibel, de Wingware, qui crée l'IDE Wing Python. "Une partie de cela vient de la syntaxe et de la lisibilité simples - il n'y a pratiquement pas de" passe-partout ". Une partie provient de la bibliothèque intégrée et standard riche et bien conçue et de la disponibilité de nombreux logiciels open source tiers bibliothèques et modules. " En étant facile à comprendre, le code est plus facile à maintenir, ajoute-t-il. 

Python, dit Chachra, est typé dynamiquement et flexible, avec un code moins verbeux. Cependant, il cite le typage dynamique comme un potentiel négatif (voir ci-dessous).

Opportunités Internet des objets. Python peut devenir populaire pour l'Internet des objets, car de nouvelles plates-formes telles que Raspberry Pi sont basées dessus, dit Carbonnelle. La documentation de Raspberry Pi cite le langage comme «un langage de programmation merveilleux et puissant, facile à utiliser (facile à lire et à écrire) et avec Raspberry Pi, vous permet de connecter votre projet au monde réel».

Avantages du codage asynchrone. Python, dit Deibel, "est idéal pour écrire du code asynchrone, qui, plutôt que le threading, utilise une seule boucle d'événement pour travailler en petites unités." Ce code, dit-il, est souvent plus facile à écrire et à maintenir sans confondre les conflits de ressources, les blocages, etc. "Les générateurs de Python sont un excellent moyen d'entrelacer l'exécution de nombreuses boucles de traitement dans cette approche." 

L'approche multiparadigm surpasse Java. L'approche de programmation de Python n'est pas aussi limitée que celle de Java, dit Carbonnelle. "Par exemple, vous n'avez pas besoin de créer une classe OO pour imprimer" Hello world "en Python - vous devez le faire en Java." Contrairement à Java, Python est multiparadigme et prend en charge les styles de programmation OO, procédurale et fonctionnelle, dit-il. (Java a récemment ajouté des fonctionnalités fonctionnelles dans Java 8.)

«En Python, tout est un objet», déclare Brian Curtin, membre du conseil d'administration de la Python Software Foundation et contributeur principal de CPython. "Il est possible d'écrire des applications en Python en utilisant plusieurs paradigmes de programmation, mais cela permet d'écrire du code orienté objet très clair et compréhensible."

Les inconvénients de Python

La vitesse peut être un problème. "Comme il s'agit d'un langage interprété, il est souvent beaucoup plus lent que les langages compilés", explique Curtin. "Cependant, cela revient à séparer le langage du runtime. Certains benchmarks du code Python s'exécutent sous PyPy fonctionnent plus rapidement que le code C équivalent ou d'autres."

"Un inconvénient possible de Python est sa faible vitesse d'exécution", explique Carbonnelle. Mais de nombreux packages Python ont été optimisés au fil des ans et s'exécutent à la vitesse C, dit-il.

Les performances, dit Chachra, "sont plus lentes que celles des langages plus anciens tels que C / C ++ et même des plus récents tels que Go."

Absence de l'informatique mobile et des navigateurs. «Python est présent sur de nombreuses plates-formes de serveurs et de bureau, mais il est faible en informatique mobile; très peu d'applications pour smartphone sont développées avec Python», explique Carbonnelle. "Il est également rarement vu du côté client d'une application Web."

Python n'est pas dans les navigateurs Web, note Deibel. "C'est vraiment dommage. Il y a du brython, mais je ne pense pas que ce soit utilisable dans le monde réel." Python est difficile à sécuriser, et c'est pourquoi il n'est pas dans les navigateurs, ajoute-t-il. «Il n'y a toujours pas vraiment de bac à sable / prison sécurisé pour Python, et je pense que c'est considéré comme fondamentalement impossible pour CPython (l'implémentation standard). 

Restrictions de conception. Les adeptes de Python ont cité plusieurs problèmes avec la conception du langage. Parce que le langage est typé dynamiquement, il nécessite plus de tests et comporte des erreurs qui n'apparaissent qu'au moment de l'exécution, dit Chachra.

Le verrou d'interpréteur global de Python, quant à lui, signifie qu'un seul thread peut accéder aux composants internes de Python à la fois, explique Deibel. «Cela peut être moins important de nos jours, car vous pouvez si facilement générer des tâches vers des processus séparés à l'aide du module de multitraitement ou écrire du code asynchrone à la place. 

Curtin dit qu'il existe quelques conventions autour de l'utilisation de Python, mais un espace blanc important est celui qui est imposé par l'interpréteur. "La structure des programmes Python doit être cohérente, donc là où les crochets ou autres identifiants permettent à l'utilisateur plus de liberté dans d'autres langages, l'indentation est ce qui compte quand il s'agit de Python."