Python est-il un langage en voie de disparition ? Un ami de ma grand-mère est un informaticien du MIT. Il m’a dit que je ne devrais pas apprendre Python parce que c’est un langage en voie de disparition, et que je devrais apprendre Assembly parce que c’est mieux que Python.


Hype

Non. Il n'est pas en train de mourir. Il est à la fin de sa phase de hype.


Voyez, il y a plus de 100 réponses à votre question mais, d'après ce que j'ai pu lire, aucune des réponses n'a ciblé ce facteur important : le hype.

Python a des forces et des faiblesses. En tant que langage informatique, il est conçu pour épeler des problèmes à un ordinateur d'une manière qu'il puisse comprendre et exécuter les solutions. La force de Python est le prototypage rapide de problèmes complexes. Sa faiblesse est la vitesse, l'efficacité et le déclin radical des deux si les problèmes deviennent de plus en plus grands, ainsi que des problèmes massifs, si les données qu'il doit gérer deviennent plus grandes qu'une taille triviale. Et trivial aujourd'hui peut devenir des gigs.


La concurrence

Python est un langage de script. Il a sa place sur le créneau du niveau utilisateur, où il se bat avec Perl, Ruby, Bash, Zsh, Lisp et Lua. Il a remplacé l'utilisation du Basic dans les environnements informatiques modernes. Peut-être qu'il fait mieux le travail du Basic, peut-être pas. Je pense que non, car le Basic est toujours facteur 30 plus rapide. Mais l'essor des langages de script est principalement dû au facteur élevé de la loi de Moore jusqu'en 2004, où le gain de vitesse était d'environ 50 % chaque année. Depuis 2004, il ralentit à seulement 10% par an et cela change tout.

Avec le métal qui fait le travail pour rendre les programmes plus rapides tout seul, il n'y avait pas vraiment besoin d'une phase d'optimisation d'un projet au cours des 20 dernières années. Et c'était la montée en puissance des scripts. Mais cela change maintenant.

C'est, en effet, un changement de jeu, où l'utilisation de VHLL comme Python ou d'autres scripts sera remplacée de plus en plus par des langages non-prototypés mais des solutions proches de la machine comme C et Assembly. La montée en puissance de l'Assembleur est également un point d'alerte pour tous ceux qui ne croient pas à cette évolution. Il a commencé à attirer de plus en plus de gens, parce que si vous voulez maintenant un gain de vitesse de vos programmes, vous devez passer à de vrais langages. Et par vrais langages, j'entends la classe de C et ASM et il n'a pas beaucoup de concurrence sur son terrain.

Mais Python n'est pas en train de mourir. Une réduction de son utilisation au domaine, où il est bon n'est pas en train de mourir, il est à la fin de son Hype cycle.

main-qimg-15c4f067c8cace904f582edcd4e5d9d2

Les faiblesses

Voyez, Basic était et est toujours un très beau langage et il est beaucoup plus facile à apprendre que Python. Il a un niveau de standardisation médiocre, mais en tant que langage pour débutants, le Basic est beaucoup plus facile à apprendre. Mais le Basic a toujours eu une odeur de dilettantisme, car de nombreuses personnes n'ayant reçu aucune formation formelle en informatique et n'ayant qu'une connaissance superficielle de la programmation l'utilisaient. L'application typique était dans les feuilles Excel par exemple.

Mais c'est le langage de script de niveau utilisateur typique. Là où Python a défilé, aussi, je dis ça comme ça.

Alors Python est-il en train de mourir ? Non. Et nous verrons des programmes Python pendant longtemps, que tant de projets travaillent avec ce langage. Mais leur concurrence va commencer à exploiter leur faiblesse pour les enlever de leurs bastions, qu'ils détiennent pour le moment.

Dans un monde, où 60% même des diplômés en CS ne sont pas capables de programmer, il y a un besoin pour certains langages simples, de niveau enfant comme le Basic. La mauvaise chose, c'est que Python ne se situe pas au niveau enfantin où se trouve le Basic. Mais il essaie de récolter le même domaine. Et c'est, pourquoi je dis que Python ne fait pas un bon travail.

J'ai critiqué son utilisation sur le Raspberry Pi par exemple. Because a simple loop isn’t doing what it should.

  1. for i in range(1,10): print i 

will produce the numbers 1…9. Oui, ce n'est pas très intuitif. A Basic

  1. for i=1 to 10: print i: next 

will produce 1…10 like you would expect.

This funny behavior of Python comes from the idea, that an array of size ten will be numbered from 0 to 9, but that’s quite a brainfart, I think. Car si je compte de 1 à 10, je veux compter de 1 à 10, pas de 1 à 9. C'est une façon très particulière de résoudre ce problème, en tout cas. Le problème est résolu par Lua, d'ailleurs, en numérotant les tableaux de 1 à 10 pour un tableau de taille 10. Ce qui est une bien meilleure façon d'aborder le problème, à mon avis, la façon correcte de haut niveau de compter les éléments d'un tableau, n'est-ce pas ?

Et ce sont les facteurs qui font descendre Python de sa phase de hype à quelque chose où les autres peuvent attaquer sa position. Ruby le fait, C#/Mono le fait par exemple, ainsi que le vieux roi du monde Perl, ne sous-estimez jamais la puissance de Perl et l'assemblage en ligne qu'il peut faire. Perl est brutal. Revenons aux traînards que sont Ruby et C#, non pas que ces deux langages soient meilleurs, mais ils commencent à traîner. Les langages de script shell comme Zsh et Bash sont aussi en train de tirer sur la position de Perl, d'ailleurs. Beaucoup de gens ont commencé à écrire de vrais programmes en Zsh, je veux dire - wtf ? Les enseignants prétendent que des langages comme Haskell ou Scala sont plus "purs", ce que je trouve une idée terrible. Ce sont des langages typiques de niveau enseignant, sans véritable champ d'application. J'appelle ça des langages de paradigme idéologique, des langages qui interdisent plus qu'ils ne permettent. Avec cela, Python est bien meilleur, Python permet beaucoup de choses que les enseignants détestent. Ce qui est bien. Cela rend un langage facile et simplifie l'orthographe des problèmes. Il est possible qu'il lance de méchants bugs, mais ce n'est pas le problème ici. Nous recherchons un langage facile. Facile et sûr est à un autre bout de la ligne.

Mais la vraie chute vient avec les applications recodées en C/ASM. Qui vont battre les solutions Python par un facteur 30 à 100. Peut-être même plus. Et l'ASM est en hausse, il monte plus vite que Python en ce moment, qui fait du surplace et a atteint son pic, je dirais. Basic revient avec .NET, ce que je viens de voir et qui ne me surprend pas. Mais je pense que ce n'est pas Visual Basic mais plutôt quelque chose comme Gambas qui représente l'avenir du Basic. Vous n'aurez pas un .NET gonflé sur des appareils plus petits comme Raspberry Pi, où Gambas, en effet, fonctionne parfaitement. Mais, oui, il revient.

Au fait, je ne donne pas trop sur l'indice Tiobe, mais il n'y a pas trop de statistiques pour cela sinon. Par exemple Tiobe se trompe carrément sur le C.

Mais le faible niveau d'éducation des programmeurs de bibliothèque pour Python, car très beaucoup pour Python est fait par des programmeurs non professionnels, par exemple dans le domaine scientifique, l'efficacité de la bibliothèque et la pratique du codage est pauvre par rapport au C par exemple.

C'est un langage de débutant et vous obtenez beaucoup de trucs de bibliothèque de merde de débutant avec cela. C'est un problème et tous les programmeurs Python le savent. J'ai fait du Python commercial et c'est la première chose que j'ai découverte. Beaucoup de bibliothèques ne signifie pas beaucoup de bonnes bibliothèques. Eh bien, j'ai vu pire, la merde de Java par exemple est la pire. C'est vraiment merdique, Python n'est pas si mauvais mais c'est assez mauvais.

J'appelle certaines mauvaises bibliothèques du code "style architecte" par opposition au code "style ingénieur". Vous ne voulez pas vivre dans une maison qui a été construite par un architecte et qui n'a jamais vu les compétences d'un ingénieur. Faites-moi confiance en cela.

Python est un langage prototype et cela se voit sur les bibliothèques.

Forces

Pour autant, de nombreux scientifiques issus d'autres domaines que la CS, qui doivent aussi programmer, choisissent Python pour leurs projets. Et ce n'est pas une mauvaise idée. Parce qu'il existe de nombreuses bibliothèques pour la biologie par exemple, Numpy pour le numérique, pour les algorithmes génétiques il y a le paquet DEAP et tout cela est très bien. Python est le nouveau Basic. Toutes ces personnes qui ont besoin de solutions programmées mais qui ne sont pas des programmeurs, qui n'ont jamais plongé plus profondément dans la question prennent un langage facile, qui leur fournit beaucoup de structures de programmation supérieures, de sorte qu'ils peuvent simplement les utiliser, de sorte qu'ils n'ont pas besoin de se casser la tête.

Aussi avec Django, il a un pied dans la porte du Web. Il y a quand même des problèmes limitatifs avec ce framework Django et les gens doivent y mettre beaucoup de travail.

Ce que je veux dire avec le prototypage rapide. Des projets Python comme iPython et iPython3 prennent en charge cet aspect de prototypage de manière très efficace.

Python n'est pas en train de mourir. Mais il reçoit une raclée en ce moment et a du mal à garder sa position de "roi de la colline".

Meilleurs langages de script, plus légers

Mon langage de script préféré, d'ailleurs, est Lua. Parce que je pense qu'avec seulement environ 100kb d'overhead pour ce langage, ce n'est pas un tel drag et memory hog comme Python (Java est pire ! J'ai évité de parler de Java, pour éviter un rant), Lua fait tout ce qu'un bon langage de script devrait faire, mais il a ses limites, où il a vraiment besoin d'avoir certains vrais langages comme C ou ASM prendre en charge les tâches lourdes. Lua est facile à importer dans n'importe quel projet C. Il suffit de quelques commandes pour pouvoir contrôler, configurer ou paramétrer le système via Lua. Et 100k est un prix qui vaut généralement la peine d'être payé.

Il est très rapide et efficace pour un langage de script et j'aimerais en voir plus à l'avenir. Il est facile à apprendre, a une limite construite dans la fonctionnalité qui doit être améliorée par des langages durs et il est petit et rapide.

Tout ce qu'un bon langage de script devrait être. Python ? A des faiblesses, des faiblesses très catastrophiques et avec les processeurs à un quasi statu quo de développement en ce moment chaque progrès que vous pouvez avoir est seulement capable d'atteindre sur l'utilisation de langages de niveau machine durs comme le "C". Dur, je ne veux pas dire dur à apprendre, mais dur comme du métal.

Et même sur le Raspberry Pi, les gens commencent à changer en ce moment.

Python n'est pas en train de mourir. Pas du tout. Mais il va tomber pendant un certain temps et ensuite ils commencent à vraiment l'utiliser, là où c'est judicieux. Et pas seulement partout et sa mère.

Voici les problèmes de performance au niveau de l'entreprise avec Python : Pourquoi CCP utilise toujours Python 2

Mieux langages de niveau débutant

Pour les langages de niveau débutant, j'ai déjà mentionné Gambas, qui devrait recevoir un peu plus d'amour pour la documentation à mon avis, pour le pousser. J'adore le langage Scratch pour les débutants, mais c'est malheureusement une merde orientée Flash, mais l'idée est assez bonne, alors vous devriez jeter un coup d'œil à Snap !, Blockly, ou Stencyl et le langage Logo de tous les temps.

main-qimg-dea4828ff0f3df1e4b5c8273410c4a00

Et donnez à Gambas un regard sérieux, s'il vous plaît. Les langages d'apprentissage orientés bloc sont très bien, en effet. J'ai trouvé ces langages en action pour les enfants de mon ancienne école, des enfants de dix à douze ans qui programmaient des robots avec ça, qui roulaient dans tous les couloirs et je suis sûr que le professeur ne permettait pas du tout ça. Mais ils s'amusaient tellement avec ça ! Oui.

Il y a des langages pour chaque objectif qu'un humain peut imaginer. Décrire chaque sorte de problème ou d'application à un ordinateur. Et certains langages sont vraiment meilleurs pour cela que Python. Vous devriez apprendre au moins trois langages dans votre vie : un langage de liaison de type script comme Python, Lua ou autre, un langage métallique comme C et, je suppose, un langage d'assemblage. Juste pour avoir une idée de ce que vous faites vraiment sur les ordinateurs. Les enfants ont souvent perdu le lien avec le métal à cause de toutes ces conneries de haut niveau qui les empêchent d'être curieux et de tous ces langages de niveau enseignant qui essaient de leur interdire de faire des choses, leur dictant que certaines choses sont mauvaises sans jamais le prouver. Sans les laisser avoir leur propre expérience.

Et c'est ce que les enfants veulent avoir : leur propre expérience.

Expérience et connaissances limitées

Et c'est pour cela que les HLL paternels sont sur un pied d'arrêt et que soudain des jeunes révoltés arrivent à nouveau avec l'Assemblée et démolissent les conneries gonflées de leurs parents et de leurs professeurs. Comme nous avons appris les techniques de rétro-ingénierie en craquant des jeux simples sur nos ordinateurs d'enfants, puis nous sommes sortis dans la nature et avons cassé des VAX et des PDP-11 et d'autres mainframes avec les mêmes compétences que nous avons acquises grâce à cela - choquant les administrateurs système adultes qui prétendaient tous que leurs systèmes étaient "sûrs". Conneries. Ne jamais sous-estimer le pouvoir anarchique d'un enfant curieux. Ils apprendront que certaines merdes gonflées font effectivement du bon travail sur certains problèmes, mais dans l'ensemble, ils ont raison, je pense :

Allez et faites tomber le roi de la colline, les enfants. Abattez les fausses hypothèses et les performances boiteuses, remplacez-les par quelque chose de frais et de nouveau, de maigre et d'intelligent. HLL est pour les vieux. J'ai un ami au début de la vingtaine qui déteste vraiment Scratch. Et je comprends pourquoi. Scratch est la façon dont les professeurs ont essayé de le forcer à utiliser l'informatique. Scratch lui cache toute la vérité et ses programmes étaient d'un facteur 1000 ou 10000 plus lents que les programmes des adultes. Un enfant veut au moins être aussi bon. Et peut l'être !

Ne vous méprenez pas, j'aime vraiment Scratch ! Si vous voyez cela, vous devez l'aimer. Mais les enfants veulent plus que cela. Du moins, je voulais plus quand j'étais enfant. Et vous devez les satisfaire. Python est une sorte de Scratch d'une certaine manière.

Scratch, c'est très bien et j'adore ça pour montrer aux enfants comment ça marche. Mais après cela, il est temps pour nous d'ouvrir le capot et de voir ce qui se passe vraiment à l'intérieur. C'était la même chose pour moi à l'époque du Commodore Basic V2. J'en ai profité pendant une semaine d'enthousiasme, j'ai découvert que ma concurrence était tellement meilleure et plus rapide et que je n'étais pas capable de l'approcher, mais je le voulais : j'ai donc appris l'assemblage au bout d'une semaine.

Révolution de la jeunesse

Et c'est aussi la " mort " de Python. Les jeunes voudront en savoir plus sur les ordinateurs. Ils voudront jeter un coup d'œil sous le capot. Et découvrir comment ils peuvent faire des ravages dans le code de leur papa.

main-qimg-592c08635e38e6d8033644342791d9e2.webp

Comment le rendre fier. "Regarde, papa, j'ai fait ton programme sur mon Raspberry Pi et je suis dix mille fois plus rapide que ton programme". Et il sourira et son papa sera tellement fier de son enfant, qu'il faillit exploser.

L'ASM est le véritable langage révolutionnaire de notre époque. Et beaucoup de gens ne voient pas pourquoi. Pourtant, c'est si simple : un enfant veut que son père soit fier de lui. Qu'on reconnaisse qu'il est égal, qu'il est utile. De faire quelque chose de mieux que ce qu'il sait faire.

Et c'est ce que représente ASM et Python pas tellement - s'il ne s'agit pas de prototypage, je veux dire.

Le Terminator n'avait pas de code Python dans son visuel, il n'avait pas LISP ou même C. C'était de l'assemblage MOS6502. Et c'est ce que les enfants veulent, rien de moins. Ils ne veulent pas d'un programme de lavage avec un litre d'adoucissant. Du moins pas ceux qui veulent changer les choses. Et pour pouvoir changer les choses, vous devez avoir le pouvoir de le faire. Et vous n'obtiendrez pas le pouvoir par quelque chose qui est trop lent pour un changement.

ASM permet au Raspberry Pi de faire de la reconnaissance visuelle par OpenCV. C'est codé en dur et cela fonctionne mieux sur quelque chose de petit comme le Raspberry Pi que sur mon PC de bureau plus de 600 fois plus rapide. Devinez pourquoi ? Parce qu'ils récoltent ce qui est là au lieu de gaspiller tout le potentiel pour un paradigme douteux, au lieu de cela ils le récoltent. Peut-être que c'est mal. Mais c'est aux enfants de le découvrir. Et mon pari est sur eux pas sur Python.

Et même s'ils ont tort et échouent à nous montrer leur puissance, ils apprendront en essayant que plus de dix ans à l'université peuvent. Car leurs professeurs sont des analphabètes de l'ASM et ne savent souvent pas vraiment de quoi ils parlent, quand ils parlent de langages assembleurs. Ou bien ils ignorent le prix à payer pour tout langage de haut niveau. Et il y a un prix à payer pour être paresseux.

main-qimg-c54155bb6cecff9457299265868f03e2