Fermer

juin 19, 2021

Pourquoi Python n'est pas le langage de programmation du futur


Il a fallu quelques décennies à la communauté des développeurs pour apprécier Python. Mais depuis le début des années 2010, il est en plein essor – et finit par dépasser C, C#, Java et JavaScript en popularité.

Mais jusqu'à quand cette tendance se poursuivra-t-elle ? Quand Python sera-t-il finalement remplacé par d'autres langages, et pourquoi ?

Mettre une date d'expiration exacte sur Python serait tellement de la spéculation, cela pourrait aussi bien passer pour de la science-fiction. Au lieu de cela, j'évaluerai les vertus qui renforcent la popularité de Python en ce moment, et les points faibles qui le briseront à l'avenir.

Ce qui rend Python populaire en ce moment

Le succès de Python se reflète dans le Stack Overflow tendancesqui mesurent le nombre de tags dans les publications sur la plateforme. Compte tenu de la taille de StackOverflow, il s'agit d'un assez bon indicateur de la popularité du langage.

Alors que R a été le plus élevé. plafonnant au cours des dernières années, et de nombreux autres langages sont en déclin constant, la croissance de Python semble imparable. Près de 14% de toutes les questions StackOverflow sont étiquetées "python", et la tendance est à la hausse. Et il y a plusieurs raisons à cela.

C'est vieux

Python existe depuis les années 90. Cela ne signifie pas seulement qu'il a eu beaucoup de temps pour grandir. Il a également acquis une communauté importante et solidaire.

Donc, si vous rencontrez un problème pendant que vous codez en Python, il y a de fortes chances que vous puissiez le résoudre avec une seule recherche Google. Tout simplement parce que quelqu'un aura déjà rencontré votre problème et écrit quelque chose d'utile à ce sujet.

C'est convivial pour les débutants

Ce n'est pas seulement le fait qu'il existe depuis des décennies, ce qui donne aux programmeurs le temps de créer de brillants tutoriels. Plus que cela, la syntaxe de Python est très lisible par l'homme.

Pour commencer, il n'est pas nécessaire de spécifier le type de données. Vous déclarez juste une variable ; Python comprendra à partir du contexte s'il s'agit d'un entier, d'une valeur flottante, d'un booléen ou autre. C'est un avantage énorme pour les débutants. Si vous avez déjà eu à programmer en C++, vous savez à quel point il est frustrant que votre programme ne soit pas compilé parce que vous avez échangé un flottant contre un entier.

Et si vous avez déjà dû lire du côté du code Python et C++- à côté, vous saurez à quel point Python est compréhensible. Même si C++ a été conçu avec l'anglais à l'esprit, c'est une lecture plutôt cahoteuse par rapport au code Python.

C'est polyvalent

Puisque Python existe depuis si longtemps, les développeurs ont créé un package pour chaque usage. De nos jours, vous pouvez trouver un package pour presque tout.

Vous voulez analyser des nombres, des vecteurs et des matrices ? NumPy est votre gars.
Vous voulez faire des calculs pour la technologie et l'ingénierie ? Utilisez SciPy.
Vous voulez vous lancer dans la manipulation et l'analyse de données ? Essayez Pandas.
Vous voulez commencer avec l'intelligence artificielle ? Pourquoi ne pas utiliser Scikit-Learn.

Quelle que soit la tâche de calcul que vous essayez de gérer, il est probable qu'il existe un package Python pour cela. Cela permet à Python de rester au top des développements récents, comme en témoigne l'essor de l'apprentissage automatique au cours des dernières années.

Les inconvénients de Python – et s'ils seront fatals

Sur la base des élaborations précédentes, vous pourrait imaginer que Python restera au top pour les âges à venir. Mais comme toute technologie, Python a ses faiblesses. Je vais passer en revue les défauts les plus importants, un par un, et évaluer s'ils sont fatals ou non.

La vitesse

Python est lent. Genre, vraiment lent. En moyenne, vous aurez besoin d'environ 2 à 10 fois plus de temps pour effectuer une tâche avec Python qu'avec tout autre langage.

Il y a diverses raisons à cela. L'un d'eux est qu'il est typé dynamiquement – rappelez-vous que vous n'avez pas besoin de spécifier des types de données comme dans d'autres langages. Cela signifie que beaucoup de mémoire doit être utilisée, car le programme doit réserver suffisamment d'espace pour chaque variable pour qu'il fonctionne dans tous les cas. Et beaucoup d'utilisation de la mémoire se traduit par beaucoup de temps de calcul.

Une autre raison est que Python ne peut exécuter qu'une tâche à la fois. C'est une conséquence des types de données flexibles – Python doit s'assurer que chaque variable n'a qu'un seul type de données, et les processus parallèles pourraient gâcher cela.

En comparaison, votre navigateur Web moyen peut exécuter une douzaine de threads différents à la fois. Et il y a aussi d'autres théories.

Mais en fin de compte, aucun des problèmes de vitesse n'a d'importance. Les ordinateurs et les serveurs sont devenus si bon marché que nous parlons de fractions de secondes. Et l'utilisateur final ne se soucie pas vraiment de savoir si son application se charge en 0,001 ou 0,01 seconde.

Scope

À l'origine, Python avait une portée dynamique. Cela signifie essentiellement que, pour évaluer une expression, un compilateur recherche d'abord le bloc actuel, puis successivement toutes les fonctions appelantes.

Le problème avec la portée dynamique est que chaque expression doit être testée dans tous les contextes possibles, ce qui est fastidieux. C'est pourquoi la plupart des langages de programmation modernes utilisent la portée statique.

Python a essayé de passer à la portée statique, mais a tout gâché. Habituellement, les portées internes – par exemple les fonctions dans les fonctions – seraient capables de voir et de modifier les portées externes. En Python, les portées internes ne peuvent voir que les portées externes, mais pas les modifier. Cela conduit à beaucoup de confusion.

Lambdas

Malgré toute la flexibilité de Python, l'utilisation de Lambdas est plutôt restrictive. Les lambdas ne peuvent être que des expressions en Python et non des instructions.

D'un autre côté, les déclarations de variables et les instructions sont toujours des instructions. Cela signifie que Lambdas ne peut pas être utilisé pour eux.

Cette distinction entre les expressions et les instructions est plutôt arbitraire et ne se produit pas dans d'autres langages.

 Les espaces rendent le code plus lisible, mais moins maintenable. Photo d'Irvan Smith sur Unsplash