Site icon Blog ARC Optimizer

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 blancs rendent le code plus lisible, mais moins maintenable. Photo d'Irvan Smith sur Unsplash

Whitespaces

En Python, vous utilisez des espaces et des retraits pour indiquer différents niveaux de code. Cela le rend optiquement attrayant et intuitif à comprendre.

D'autres langages, par exemple C++, reposent davantage sur les accolades et les points-virgules. Bien que cela puisse ne pas être visuellement attrayant et convivial pour les débutants, cela rend le code beaucoup plus facile à gérer. Pour les projets plus importants, c'est beaucoup plus utile.

Des langages plus récents comme Haskell résolvent ce problème : ils reposent sur des espaces blancs, mais offrent une syntaxe alternative pour ceux qui souhaitent s'en passer.

Mobile Development

Comme nous assistons au passage du bureau au smartphone, il est clair que nous avons besoin de langages robustes pour créer des logiciels mobiles.

Mais peu d'applications mobiles sont développées avec Python. Cela ne veut pas dire que cela ne peut pas être fait – il existe un package Python appelé Kivy à cet effet.

Mais Python n'a pas été conçu pour le mobile. Ainsi, même si cela peut produire des résultats passables pour les tâches de base, votre meilleur pari est d'utiliser un langage qui a été créé pour le développement d'applications mobiles. Parmi les frameworks de programmation largement utilisés pour les mobiles, citons React Native, Flutter, Iconic et Cordova.

Pour être clair, les ordinateurs portables et les ordinateurs de bureau devraient exister pendant de nombreuses années. Mais comme le mobile a depuis longtemps dépassé le trafic de bureau, il est sûr de dire que l'apprentissage de Python n'est pas suffisant pour devenir un développeur polyvalent chevronné.

Erreurs d'exécution

Un script Python n'est pas d'abord compilé puis exécuté. Au lieu de cela, il compile à chaque fois que vous l'exécutez, de sorte que toute erreur de codage se manifeste à l'exécution. Cela conduit à de mauvaises performances, à une consommation de temps et à la nécessité de nombreux tests. Comme, beaucoup de tests.

C'est génial pour les débutants car les tests leur apprennent beaucoup. Mais pour les développeurs chevronnés, devoir déboguer un programme complexe en Python les fait mal tourner. Ce manque de performances est le facteur le plus important qui définit un horodatage sur Python.

Qu'est-ce qui pourrait remplacer Python à l'avenir – et quand

Il y a quelques nouveaux concurrents sur le marché des langages de programmation :

  • Rust propose le même type de sécurité que Python — aucune variable ne peut être accidentellement écrasée. Mais cela résout le problème de performance avec le concept de propriété et d'emprunt. C'est également le langage de programmation le plus apprécié de ces dernières années, selon StackOverflow Insights.
  • Go est idéal pour les débutants comme Python. Et c'est si simple qu'il est encore plus facile de maintenir le code. Point amusant : les développeurs de Go sont parmi les programmeurs les mieux payés sur le marché.
  • Julia est un tout nouveau langage qui concurrence de front Python. Cela comble le vide des calculs techniques à grande échelle : généralement, on aurait utilisé Python ou Matlab, et on aurait patché le tout avec des bibliothèques C++, qui sont nécessaires à grande échelle. Maintenant, on peut utiliser Julia au lieu de jongler avec deux langages.

Bien qu'il existe d'autres langages sur le marché, Rust, Go et Julia sont ceux qui corrigent les correctifs faibles de Python. Tous ces langages excellent dans les technologies à venir, notamment dans l'intelligence artificielle. Bien que leur part de marché soit encore faible, comme en témoigne le nombre de balises StackOverflow, la tendance pour chacune d'entre elles est claire : à la hausse.

Instantané de balises sur divers langages de programmation sur StackOverflow.

Compte tenu de la popularité omniprésente de Python en ce moment, cela prendra sûrement une demi-décennie, peut-être même un tout, pour que l'une de ces nouvelles langues la remplace.

De quelle langue il s'agira – Rust, Go, Julia ou une nouvelle langue du futur – est difficile à dire à ce stade. Mais étant donné les problèmes de performances qui sont fondamentaux dans l'architecture de Python, on prendra inévitablement sa place.

Cet article a été écrit par Rhea Moutafis et a été initialement publié le Vers la science des données. Vous pouvez le lire ici.




Source link
Quitter la version mobile