[gull] Faut-il réhabiliter Perl comme langage de scripting système?

Daniel Cordey dc at pxcluster.com
Sun Mar 4 20:32:23 CET 2018



On 04. 03. 18 15:50, Laurent Franceschetti wrote:
> Je souhaiterais avoir votre avis sur le rôle de Perl dans notre 
> « skill set », parce que je me demande s’il mériterait peut-être qu’on 
> l’enseigne à nouveau aux programmeurs.
> ...
> Pour moi ce ne sont pas des conclusions, mais des réflexions de 
> travail (je vais faire l'expérience d’écrire mes petits scripts en 
> Perl au lieu de bash). Je serais curieux d’avoir vos réactions — 
> favorables ou contraires — à ce sujet?

Comme tu le dis, Perl est victime de l'arrivée d'un jeune mâle dans la 
meute :-) Ce que tu dis au sujet des shells est très juste; il est 
important de ne pas aller trop loin avec ! Perl a remplit le rôle 
d'intermédiaire pendant des années et, jusqu'à il y a quelques années, 
il était sans conteste la meilleure solution entre le shell et les 
langages compilés. Aujourd'hui, il est bousculé par un langage qui 
permet de faire "plus", mais requiert aussi un prix de départ un poil 
plus élevé, mais c'est assez relatif tout compte fait.

De plus en plus d'outils d'administration sont réalisés en Python. Sans 
doute parce qu'il s'interface aisément avec Gtk/Qt/etc., ou qu'il est 
plus puissant en structure de donnée et en calcul ? Ou parce que la 
nouvelle génération ne connaît pas ou n'apprend pas Perl ? Je ne sais pas...

Pour moi, à mon très humble avis, Perl souffre de quelques défauts dont :

- Très vite illisible, ou impossible à maintenir. Quand on reprend le 
code de quelqu'un, la lecture de chaque ligne est un effort 
non-négligeable qui fatigue très vite. A plus forte raison si le 
programme est gros...

- Un syntaxe "bricolée" pour étendre les fonctionnalités du langage avec 
les années. La proportion de caractère "spéciaux" est plus que suspecte 
à mes yeux et est là uniquement pour aider l'interpréteur, au détriment 
du programmeur.

- Perl est limité à l'usage de "strings". Ceci est valable pour toutes 
les manipulations dans Perl. Les "hash" en Perl sont utiles comme 
extension du langage, mais sont beaucoup plus limités que 
l'implémentation en Python et l'on ne peut pas se créer un objet qui 
puisse être utilisé comme clef. De plus, toutes les valeurs numériques 
étant un "string", il est difficile de faire la différence entre float 
et int, de même que vouloir agir sur la précision d'une variable lors 
des calculs est assez pénible et surtout pas performant du tout. En 
plus, cette manière de faire ralentit l'exécution du code.

- Perl est intimement lié aux regexp. C'est sans doute un atout dans 
certains cas. Mais ça rend la lecture de codes Perl assez... pénible.

- Traitement des exceptions très perfectible, ce qui rend le debugging 
particulièrement difficile et ne favorise pas l'écriture de code fiable.

- Passage de paramètres comme le shell ou C; à la différence que l'on a 
pas de notion de signature et d'analyseur statique comme en C. C'est la 
porte ouverte à de nombreux bugs souvent difficile à trouver.

Perl est un langage qui a été conçu comme une extension du shell pour 
faciliter l'écriture de scripts pour l'administration système. Il permet 
de faire mieux que le shell, mais souffre des mêmes défauts. Il est plus 
performant car il n'a pas besoin de se reposer sur des commandes du 
système, donc pas de fork/exec; et c'est sans doute son gros avantage 
par rapport au shell. Mais dans la manipulation de structure de données 
complexes, ses limitations deviennent àvidentes et ses performances sont 
moins bonnes que Python (je ne parle même pas de calculs).

Perl permet sans doute d'écrire du code plus compact que Python pour 
manipuler des fichiers, mais c'est au détriment de la lisibilité. Or, 
dans le domaine de la maintenance. la notion de lisibilité devient 
capitale, et c'est sans doute cet aspect qui rebute les nouveaux venus 
dans l'IT. Aussi, dés que l'on quitte le mode du "traitement" de 
fichier, on quitte la zone de confort de Perl et ses limitations 
commencent à peser très vite. On retombe dans le même problème que la 
"sur-utilisation" du shell dont tu parlais dans ton mail.

Voilà, c'est très perso... Je ne suis pas objectif car j'ai détesté Perl 
dés le début et j'ai toujours réussi à en faire un minimum, me 
contentant de jongler entre le shell et des programmes C que j'écrivais 
lorsque les choses devenaient trop compliquées en shell (ou avaient 
besoin de performance). L'arrivée de Python m'a comblé en tant que 
programmeur et je vois bien que ce langage recouvre un peu les domaines 
où Perl fut pendant longtemps le seul pour résoudre un type de problème. 
Les avantages de Perl s'en sont trouvés remis en cause et ses 
limitations sans doute plus visibles.

Recommencer l'enseignement de Perl ? Pourquoi pas... mais à qui ? Sans 
doute pas à la nouvelle génération, baignée de concept antinomiques :-)

dc

	



More information about the gull mailing list