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

        

_______________________________________________
gull mailing list
[email protected]
http://forum.linux-gull.ch/mailman/listinfo/gull

Répondre à