Parmi les conditions nécessaires à la survie des langages de programmation, nous avons la communauté et la popularité. Pour juger de la popularité de Perl, l’on peut se tourner vers l’indice de popularité Tiobe qui retrace la courbe d’évolution du langage. En 1995, environ quelques années après la sortie de sa première version stable, le langage a été classé 3e parmi les langages de programmation d’alors. En 2000, il est passé à la 4e place. En 2005, il a perdu un rang et est passé à la 5e place. En 2010, c’est la 7e position qu’il occupait. Et en 2015, il est passé à la 8e place. Jusqu’en 2015 donc, ce langage était utilisé par un nombre important de développeurs et d’entreprises.
Mais à partir de là, les développeurs ont commencé à prendre leur distance et en 2020, il est passé à la 14e place. Pour ce mois de mars, il occupe la 17e place dans le récent classement de Tiobe. Avec Redmonk, qui donne la tendance des langages sur les plateformes Github et Stack Overflow, Perl occupe la 19e place dans son classement du mois de janvier. Et avec PYPL, qui mesure l’indice de popularité des langages de programmation en utilisant Google Trends, Perl a perdu deux places par rapport à l’an dernier et occupe pour ce mois de mars la 23e place. Si les développeurs semblent délaisser Perl au fil des années, cela serait dû en partie aux efforts consentis pour maintenir le langage et lui apporter des fonctionnalités fraîches (frameworks, bibliothèques, performances, etc.) que l’on retrouve dans les langages de la dernière décennie. Pour certaines personnes (beaucoup plus jeunes en l’occurrence), Perl est considéré comme un langage de « ;grand-père ;», à peu près de la même façon que les gens voient COBOL aujourd’hui.
Google Trends : évolution de Perl de 2004 à nos jours
Ces personnes estiment que l’évocation du mot Perl renvoie une mauvaise image qui pourrait contribuer à éloigner les jeunes développeurs. En effet, pour de nombreux développeurs, Perl qui était autrefois un langage de programmation Web de premier plan, pragmatique et utile a acquis au fil des années la mauvaise réputation d’être un langage en écriture seule (write-only). D’après eux, les développeurs pensaient que le langage était efficace et portable, mais il s’est accompagné de complications. Plusieurs l’ont qualifié de langage « ;fragmenté ;», car il semble que les créateurs ont accumulé les fonctionnalités les unes après les autres sans penser à la manière dont elles seraient synchronisées.
Des efforts de modernisation du langage ont été faits avec la version 6 de Perl, mais avec cette dernière version du langage, l’on ne parle plus de Perl, mais de Raku, qui est devenu un langage sœur de Perl, tant les changements dans cette version 6 de Perl sont importants et radicaux par rapport à Perl 5. Si donc l’on s’en tient au langage Perl, l’on est actuellement bloqué sur la version 5 dont la première version est sortie depuis 1994. À ces problèmes d’évolution, d’autres utilisateurs ajoutent par exemple que pour un langage qui est censé être multiplaforme, l’exécutable de Perl ne fonctionne pas sous les dernières versions de Windows ou Ubuntu pour quelque raison que ce soit. En outre, le compilateur ne fonctionne plus non plus. Pour toutes ces raisons, la communauté du langage ne grandit plus et son utilisation diminue de plus en plus. Apple pour sa part a annoncé officiellement en 2019 que le runtime de Perl (et aussi ceux d’autres langages de scripts comme Python et ruby) ne sera plus installé par défaut dans les nouvelles versions de macOS. Cela rappelle fortement à la décision d’Apple de plus supporter Flash sur iOS, après quoi l’usage de Flash a baissé au fil des ans pour être entièrement abandonné par Adobe depuis l’an dernier.
Plan de relance pour sortir Perl de son déclin
Reconnaissant la baisse continue des utilisateurs de Perl année après année, le comité de pilotage de Perl planche actuellement sur son plan de relance qui passe par les points suivants :
- Améliorer la base de code de Perl en ajoutant des fonctionnalités modernes au langage ;;
- travailler à changer la perception du langage en la faisant passer en un langage qui évolue continuellement, mais soigneusement avec de nouvelles fonctionnalités et abandonne les fonctionnalités obsolètes ;;
- rendre Perl accueillant pour nouveaux utilisateurs, fiable pour les utilisateurs existants et convaincant pour tout le monde.
Stratégie
Pour atteindre les objectifs ci-dessus, l’équipe de Perl compte s’appuyer sur la stratégie suivante qui est toujours en cours d’élaboration :
- concevoir une feuille de route des fonctionnalités à intégrer dans le langage ;;
- avant d’introduire des changements de rupture, il faut au préalable avoir une ou plusieurs versions majeures qui avertissent, si possible, et documentent le changement imminent ;;
- produire un modèle clair de la manière dont les nouvelles fonctionnalités passent par les protections expérimentales et de fonctionnalités, puis évoluent avec diligence ;;
- développer des règles sur la façon dont les comportements sont jugés dignes d’être marqués pour la suppression, ainsi qu’un processus sur la façon dont cela se produira ;;
- soutenir les développeurs et fournir un chemin facile à suivre pour les aider à faire la transition de la « ;vieille école Perl ;» à la nouvelle base de référence.
Une « ;nouvelle base de référence ;» pour attirer de nouveaux développeurs
Pour attirer de nouveaux développeurs, l’équipe de maintenance de Perl compte appliquer une cure de jouvence qui passe par l’implémentation des points suivants :
- activer strict et warnings par défaut (mais pas pour —e ou —E), dans une prochaine version ;;
- les signatures (actuellement une fonctionnalité expérimentale) seront activées par défaut. Cela signifie que la fonctionnalité doit d’abord cesser d’être expérimentale et qu’il va falloir décider comment résoudre les conflits avec du code utilisant des prototypes ;;
- Certains des changements post-5.8 auront la protection de fonctionnalité supprimée, ou une valeur élevée et/ou un risque faible ;;
- certaines fonctionnalités erronées du langage seront désactivées par défaut, mais peuvent être réactivées, du moins pour le moment ;;
- nous voulons que certaines nouvelles fonctionnalités (pas encore en Perl) soient également activées par défaut : try/catch, trim ;;
- nous sommes déterminés à améliorer la syntaxe orientée objet dans une prochaine version, et nous aimerions que ce soit la version 8, mais nous ne voulons pas retarder cette proposition, car l’orienté objet a besoin de temps pour mûrir.
Comment parvenir à cette nouvelle base de référence ?
- Selon les mainteneurs de Perl, des modifications ont été déjà apportées, mais pas à cette échelle. La version 5 de Perl sera utilisée comme appui pour passer aux changements. Par ailleurs, une période de transition sera donnée pour que les utilisateurs puissent toujours exécuter leur code source Perl 5, tout en identifiant plus facilement, si cela s’avère nécessaire, les changements qu’ils devront apporter pour que leur code s’exécute à l’avenir ;;
- la version 7.0 suivra la 5.34, comme première étape sur la voie des changements de rupture :
- la version 7 introduira des avertissements pour les comportements par défaut qui changeront tels que les violations de restriction ou les conflits de noms ;;
- la fonctionnalité « ;use v7 ;» activera toutes les choses énumérées ci-dessus. Perl 7 prêt à l’emploi exécutera tout ce que 5.34 exécutera, mais avec des avertissements supplémentaires ;;
- le numéro de version est repoussé à 7 pour signaler le changement de direction et la portée du changement autorisé ;;
- une fois Perl 7 publié, il n’y aura plus de version 5.x.0 (bien qu’il puisse y avoir d’autres versions 5.34.y) ;;
- les grands changements de la version 8 sont des changements réels dans le langage :
- la version8 changera réellement les valeurs par défaut. Par exemple, les restrictions et les avertissements seront activés ;;
- la version 8.0 suivra tout ce qui arrive en dernier avec la v7.X ;; une fois la version 8 sortie, il n’y aura plus de sortie de versions de Perl 7 ;;
- les versions ultérieures à la v8.x introduiront d’autres changements, derrière des protections expérimentales et des fonctionnalités ;;
- la manière dont les « ;fonctionnalités ;» et les « ;expériences ;» fonctionnement n’a pas changé, mais l’équipe de Perl souhaite utiliser ces mécanismes pour mener un changement plus continu dans le langage, de manière à ce que les nouvelles fonctionnalités soient réellement utilisées.
Propositions pour les changements dans les différentes versions de Perl (5, 7 et 8)
Nous précisons qu’étant donné que Perl 6 a été nommé raku, il n’y aura donc pas de Perl 6, mais l’on passera de la version 5 à la version 7, puis à la version 8. Pour ce qui concerne le cycle de vie des versions stables, des versions de maintenance et des versions de développeur, il ne changera pas.
- Perl 8 constituera un changement radical par rapport au comportement par défaut de Perl 5 :
- les fonctionnalités strict et les avertissements sont activés par défaut (mais pas sur —e et —E). Il sera toujours possible de les désactiver ;;
- les fonctionnalités protégées supprimées : say, state, __SUB__, fc, refaliasing, declared_refs, et try/catch ;;
- no indirect, no multidimensional et no bareword :: filehandles sont activés par défaut. Certains pourraient penser que c’est un pas trop loin, mais l’équipe de Perl pense qu’il serait intéressant de l’essayer ;;
- Perl 7 est le tremplin entre Perl 5 et Perl 8 :
- les choses qui seront abandonnées dans Perl 8 seront mentionnées dans Perl 7, par défaut, si possible;
- « ;use v7 ;» est la seule ligne que vous pouvez utiliser pour obtenir le comportement de Perl 8 (modulo ce qui vient dans les versions 7.x)
- 2 ou 3 versions de Perl 7 sont attendues, mais probablement 2 ;;
- en passant de la version 5 à la version 7, l’équipe de Perl envisage de sauter la version 7.0 et passer directement à la version 7.1 qui serait dans un premier temps une version d’évaluation servant à supprimer les bogues liés au changement de version. La version 7 pourrait donc commencer par le numéro 7.1, puis passer à la 7.2 ;;
- la version 5.34 sera la dernière version stable de Perl 5 :
- le nombre habituel de versions de maintenance sera conservé, mais il peut y en avoir plus ;;
- cette version majeure sera toujours maintenue lors de la sortie de Perl 8 ;;
- la période de publication de la version 7 sera utilisée pour aider les gens à accompagner l’équipe de Perl ;;
- étant donné que plusieurs versions 8.x sont prévues :
- de nouvelles fonctionnalités seront introduites, avec des fonctionnalités/protections expérimentales au besoin ;;
- des modifications mineures seront apportées à la famille de versions 8.x ;;
- des modifications majeures entraîneraient une version v9, avec des avertissements dans deux versions 8.x antérieures ;;
Après la mise en œuvre de tout ce plan, l’équipe de Perl compte se tourner vers les points ci-dessous :
- examen et commentaires initiaux du noyau, itération et affinement ;;
- partage avec p5p ;; itération et affinement ;;
- plus large publication ;;
À la suite de ce plan de propositions, plusieurs personnes pourraient avancer que ce plan n’est en rien différent de celui qui a été proposé l’an dernier, vivement débattu et jamais implémenté. Mais pour cette fois, l’équipe de Perl avance que ce plan de propositions est plus fermement exprimé en termes de services déjà disponibles.
Source : Propositions pour sauver Perl
Et vous ?
Utilisez-vous actuellement Perl ;? Pourquoi ;?
Selon vous, les propositions du comité de pilotage pourront-elles sauver Perl de son déclin ;?
Au-delà de ces propositions, qu’est-ce que l’équipe de Perl pourrait faire pour redonner à Perl l'attrait qu’il avait auprès de la communauté de développeurs ;?
Voir aussi
Perl est-il un langage de programmation mourant ;? Le langage pourrait s’éteindre d’ici 2023, selon une étude
Perl 6 sera-t-il renommé avec un nom radicalement différent pour se démarquer de Perl 5 ;? La communauté Perl divisée sur la décision à prendre après la sortie de Perl 6 qui rompt avec Perl 5
Sondage : quels sont les langages de programmation que vous détestez le plus en 2019 ;? Pourquoi ;? Partagez vos avis
Sondage : quels sont les langages de programmation qui vont probablement disparaître dans les prochaines années ;?