Pourquoi l'avenir n'est pas pour Python

Bien sûr, ce langage de programmation sera en demande pendant encore de nombreuses années.



Il a fallu des décennies à la communauté de la programmation pour apprécier Python. Depuis le début des années 2010, il est en plein essor - et surpasse finalement C ++, C #, Java et JavaScript en popularité.

Mais combien de temps cette tendance se poursuivra-t-elle? Quand Python sera-t-il éventuellement remplacé par d'autres langages, et pourquoi cela arrivera-t-il inévitablement?
Logiciel EDISON - développement web
La traduction a été soutenue par EDISON.

Nous développons des applications en Python , ainsi que des tests de logiciels .

Nous aimons et utilisons largement Python! ;-)

Ce qui rend Python populaire aujourd'hui


La popularité de Python peut être jugée par StackOverflow, si vous regardez le nombre de balises dans les messages. Compte tenu de l'échelle de StackOverflow, il s'agit d'un indicateur assez objectif de la popularité de la langue.


Mention sur StackOverflow de certains langages de programmation populaires - la dynamique des changements au fil des ans. Les performances de Python augmentent régulièrement, tandis que les concurrents diminuent.

Alors que R a été sur le plateau au cours des dernières années et que 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 cette tendance ne fait que croître. Et il y a plusieurs raisons à cela.

Testé dans le temps


Python existe depuis les années 90. Ce n'est pas seulement qu'il a eu beaucoup de temps pour grandir. Et aussi qu'une grande communauté de soutien s'est formée.

Par conséquent, si vous rencontrez des problèmes lors de l'écriture de code Python, il est fort probable que vous puissiez les résoudre rapidement à l'aide de la recherche Google. Tout simplement parce que quelqu'un a déjà rencontré un problème similaire et a écrit quelque chose d'utile à ce sujet.

Convient aux débutants


Et le fait n'est pas seulement que le langage existe depuis plusieurs décennies, pour lequel les programmeurs ont écrit un certain nombre de manuels brillants. La syntaxe Python est également très lisible.

Tout d'abord, il n'est pas nécessaire de spécifier un type de données. Vous déclarez simplement une variable - à partir du contexte, Python comprendra s'il s'agit d'un entier, d'une valeur à virgule flottante, d'un booléen ou d'autre chose. Ceci est d'une grande aide pour les débutants. Si vous avez déjà dû programmer en C ++, vous savez à quel point c'est triste quand un programme ne compile pas parce qu'un entier est substitué au lieu d'un nombre à virgule flottante.

Et si vous avez déjà dû comparer du code Python et C ++, alors vous savez à quoi ressemble Python plus compréhensible. Malgré le fait que C ++ est conçu en tenant compte de la langue anglaise, c'est une lecture très difficile par rapport au code Python.

Universel


Python existe depuis longtemps, pendant lequel les développeurs ont créé de nombreuses bibliothèques pour toutes les occasions. De nos jours, pour presque tout, vous pouvez trouver l'outil requis.

Beaucoup de nombres, vecteurs et matrices? NumPy à la rescousse.
Calculs d'ingénierie technique? Utilisez SciPy .
Analyse de Big Data? Les pandas le découvriront.
Apprentissage automatique, réseaux de neurones, IA? Pourquoi pas Scikit-Learn ?

Quelle que soit la tâche de calcul que vous exécutez, il y a une chance qu'il existe un package Python pour cela. Cela permet au langage de rester dans la tendance, ce qui est visible par la popularité croissante de l'apprentissage automatique au cours des dernières années.

Failles de Python - et peuvent-elles enterrer le langage


Inspiré par l'état actuel des choses, on peut imaginer que Python est un sérieux et à long terme. Mais, comme toute technologie, Python a ses faiblesses. Examinons dans l'ordre les lacunes les plus importantes et évaluons si elles sont fatales ou non.

La vitesse


Python est lent. Non, eh bien, vraiment lent. En moyenne, une tâche s'exécute 2 à 10 fois plus longtemps que dans les langues concurrentes.

Il y a des raisons pour cela. Tout d'abord, la frappe dynamique - rappelez-vous, nous avons dit ci-dessus que c'est très pratique lorsque vous n'avez pas besoin de spécifier les types de données, comme dans d'autres langues? Le revers de la médaille est la nécessité d'utiliser une grande quantité de mémoire, car le programme doit réserver suffisamment d'espace pour chaque variable afin qu'il fonctionne de toute façon. Et la mémoire «avec une marge» entraîne une plus grande dépense de temps de calcul.

Deuxièmement, Python ne peut effectuer qu'une seule tâche à la fois. C'est aussi une conséquence des types de données flexibles - Python doit s'assurer qu'un seul type de données correspond à chaque variable, et les processus parallèles peuvent interférer avec cela.

Mais, dans l'ensemble, la vitesse n'est pas critique. Les ordinateurs et serveurs productifs sont si accessibles que nous ne pouvons parler que de fractions de seconde. L'utilisateur final ne se soucie pas si son application se charge en 0,001 ou en 0,01 seconde.

Zone de visibilité


Python était initialement limité dynamiquement. Cela signifie essentiellement que pour évaluer l'expression, le compilateur recherche d'abord le bloc actuel, puis séquentiellement toutes les fonctions appelantes.

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

Python a tenté de passer à la portée statique, mais a échoué. En règle générale, les étendues internes, telles que les fonctions dans les fonctions, peuvent voir et modifier les étendues externes. En Python, les régions intérieures ne peuvent voir que les régions extérieures, mais pas les modifier. Cela conduit à beaucoup de confusion.

Fonctions lambda


Malgré toute la flexibilité de Python, l'utilisation de lambda est assez limitée. Ils ne peuvent être que des expressions en Python, mais pas des opérateurs.

Les déclarations de variables et les opérateurs, en revanche, sont toujours des opérateurs. Cela signifie que les lambdas ne peuvent pas être utilisés pour eux.

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


Une indentation stricte rend le code plus lisible, mais leur inévitabilité nuit au support.

Espaces et tabulations


En Python, les espaces et les tabulations sont utilisés pour indiquer différents niveaux de code. Cela le rend visuellement attrayant et intuitif.

Dans d'autres langages, comme C ++, les accolades avec des points-virgules sont utilisées pour les structures imbriquées. Bien que cela ne soit pas si beau et peu pratique pour les débutants, cela rend le code plus pratique à maintenir. Avec la croissance du projet, l'importance de cette approche augmente également.

De nouveaux langages (relativement) comme Haskell résolvent ce problème: ils s'appuient sur des espaces, mais offrent une syntaxe alternative pour ceux qui veulent s'en passer.

Développement mobile


Comme il y a un passage massif des PC de bureau aux smartphones, il est évident qu'il existe un besoin croissant de langues fiables pour créer des logiciels mobiles.

Mais les applications mobiles en Python environ deux fois et mal calculées. Cela ne signifie pas que ce n'est pas possible du tout - pour cela, il existe un package appelé Kivy.

Python n'a pas été créé pour les appareils mobiles. Même s'il peut donner des résultats acceptables pour résoudre des problèmes de base dans ce domaine, il est préférable d'utiliser un langage adapté au développement d'applications mobiles. Certaines plates-formes de programmation mobile couramment utilisées incluent React Native, Flutter, Iconic et Cordova.

Bien sûr, les ordinateurs portables et les ordinateurs de bureau seront toujours utilisés pendant de nombreuses années. Cependant, les appareils mobiles ont depuis longtemps dépassé le trafic des ordinateurs de bureau. Il est sûr de dire que l'apprentissage de Python ne suffit pas pour être considéré comme un développeur expérimenté et complet .

Erreurs d'exécution


Tout d'abord, compilation séparément, puis exécution - dans certains autres langages, mais pas en Python. Au lieu de cela, le code se compile chaque fois qu'il est exécuté, donc toute erreur dans le code apparaît pendant l'exécution du programme. Cela conduit à des performances réduites, à une perte de temps inutile et à la nécessité d'un grand nombre de tests. Plus de tests au dieu des tests!

C'est parfait pour les débutants, car les tests seuls en apprennent beaucoup. Mais pour les développeurs expérimentés, devoir déboguer un programme complexe en Python les rend faux. Ce manque de performances est le facteur le plus grave indiquant que Python passera dans un avenir prévisible.

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


Plusieurs nouveaux concurrents sont apparus sur le marché des langages de programmation:

  • Rust , Python — . . StackOverflow Insights, .
  • Go , Python. , . : Go — .
  • Julia est un tout nouveau langage qui rivalise directement avec Python. Il comble le vide dans les calculs techniques à grande échelle: vous pouvez généralement utiliser Python ou Matlab, effectuant une partie des tâches (parfois une partie très importante) à l'aide de bibliothèques C ++. Maintenant, au lieu de jongler avec deux langues, vous pouvez simplement utiliser Julia.

Bien qu'il existe d'autres langages sur le marché, Rust, Go et Julia corrigent les faiblesses de Python. Tous ces langages sont excellents dans les technologies futures, notamment en intelligence artificielle. Bien que leur part de marché soit encore faible (ce qui se reflète dans le nombre de balises StackOverflow), la tendance pour chacun d'eux est évidente: en hausse et uniquement en hausse.


Mention sur StackOverflow pour Go / Rust / Julia - dynamique des changements au fil des ans. Les indicateurs sont encore modestes, mais ces langues ont une tendance à la hausse constante.

Compte tenu de la popularité généralisée de Python aujourd'hui, il faudra une demi-décennie, voire même un tout, pour que l'un de ces nouveaux langages le remplace.

Il est difficile de dire quelle langue ce sera - Rust, Go, Julia ou une autre nouvelle langue du futur. Mais étant donné les problèmes de performances qui sont fondamentaux pour Python en raison de son architecture, l'inévitable se produira tôt ou tard.

All Articles