
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 :
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.