[couverture de Linux Magazine 39]

Perl : un langage libre

Article publié dans Linux Magazine 39, mai 2002.

Copyright © 2002 - Marianne Ciaudo - mciaudo (à) tuxfamily.org

[+ del.icio.us] [+ Developers Zone] [+ Bookmarks.fr] [Digg this] [+ My Yahoo!]

Ce document est généré à partir du source XHTML fourni par Sylvain Lhullier à l'adresse http://sylvain.lhullier.org/publications/mongueurs.html.

Chapeau

Crée en 1986 par Larry Wall, Perl (Practical Extraction and Report Language) est un langage de programmation interprété (avec une phase interne de pré-compilation). Sa syntaxe dérive des scripts shell, et d'autres langages comme C, awk, sed. Pour tout ceux qui connaissent ces langages, notamment pour ceux qui viennent du monde Unix, Perl est relativement facile à apprendre.

Le langage Perl utilise les expressions régulières. Ainsi, il est particulièrement adapté à la manipulation de chaînes de caractères et de fichiers. Apprécié par les administrateurs du monde Unix pour les scripts, Perl est entré dans le monde du web avec l'avènement des CGI (Common Gateway Interface). Grâce à ses fonctions de manipulation de fichiers et de répertoires, Perl s'impose alors comme la seule alternative sérieuse pour écrire des CGI. Aujourd'hui la présence de PHP a changé la donne. Plus rapide et plus adapté que Perl, PHP devient le langage de prédilection pour les sites web. Cette association Perl/CGI a d'ailleurs généré une image réductrice qui nuit au langage. En effet, sa puissance et surtout sa diversité d'utilisation sont souvent méconnues. Nous allons tentez d'y remédier en vous présentant les avantages de Perl mais aussi sa culture. Attention, il ne s'agit pas d'un article d'introduction aux bases du langage (ce dernier est prévu pour le prochain numéro : patience !).

"There is more than on way to do it"

Perl a été conçu selon un concept de langage naturel : on écrit du Perl comme l'on pense. La rédaction du code Perl est assez personnelle. Elle varie beaucoup en fonction des individus. Cette caractéristique de Perl se retrouve dans son slogan "there is more than on way to do it". Déroutant de prime abord, Perl laisse beaucoup de liberté aux développeurs. Une fois qu'ils ont apprivoisé la syntaxe, ils apprécient cette latitude. Cela explique la motivation et l'énergie de la communauté des programmeurs Perl qui souhaitent faire connaître le langage à un large public d'informaticiens, à la fois du monde Unix, GNU/Linux, BSD ou Windows. Cependant, la diversité des méthodes de codage est aussi un des inconvénients principal du langage : il est souvent difficile de reprendre le code d'un autre développeur s'il n'est pas correctement documenté.

Par ailleurs, le modèle de développement de Perl est très consensuel : une nouvelle option ne s'adopte toujours qu'à l'unanimité, après des discussions souvent très animées sur la Mailing List. C'est un langage qui colle bien à la philosophie du libre. D'autant que la licence de Perl est double : Artistic Licence et GPL. La version actuelle du langage est la 5.6.1 mais l'équipe travaille aussi sur Perl 6 avec en prévision une refonte majeure du langage, devenu trop lourd et trop complexe. La culture "Perl", et son mode de développement ne sont pas remis en cause.

Les qualités du langage : pourquoi choisir Perl ?

Un des avantages principaux est la rapidité de mise en place d'une application en Perl. Si vous venez du monde Unix, que vous connaissez le C ou le shell, l'apprentissage de Perl est facilité. Pour les débutants, il est très valorisant de réussir, avec peu de lignes de code, à créer rapidement un programme efficace.

La puissance de Perl pour la manipulation de chaînes de caractères et de fichiers lui donne des atouts considérables pour écrire des applications nécessitant des des expressions régulières, par exemple le traitement de texte avec la création de page à la volée.

Perl a un typage faible par rapport à des langages comme le C. L'allocation de mémoire est prise en charge par l'interpréteur, il n'y a donc pas de gestion de mémoire, pas de limite de buffer. Les expressions sont dimensionnées automatiquement : une expression sera évaluée différemment en fonction du type de variable. Il n'y a pas non plus de limitation sur la taille des données ou sur leur contenu (une chaîne peut contenir le caractère nul).

Perl existe depuis plus de 15 ans, beaucoup de bibliothèques et de modules d'extensions sont donc déjà disponibles. Perl est l'un des rare langage où toutes les sources se centralisent , cela grâce à CPAN ( Comprehensive Perl Archive Network). CPAN regroupe tous les modules existants de façon exhaustive. Il abrite aussi des logiciels en Perl et la documentation associée. D'ailleurs la documentation est très abondante, peut-être même trop si vous recherchez une information pointue ! La page de man est un véritable sommaire. Les new groups et les livres ne manquent pas (notamment chez O'Reilly avec Introduction à Perl de Schwarz et Programmation en Perl de Wall, Christiansen et Orwant). De plus, Perl est natif sur les machine GNU/Linux, BSD, Unix (et donc aussi MacOS X) mais aussi Windows, VMS, Amiga ... Cela facilite grandement le portage des applications.

Perl possède certains inconvénients notamment des soucis de sécurité intrinsèque à son statut de langage interprété. Cependant, il existe un mode "secure" qui vérifie pour chaque variable si elle est sécurisée ou non. Ce mode ralentit l'application, il est donc réservé au débugage. Perl n'est pas efficace pour le calcul scientifique. Langage très permissif, il permet aux programmeurs d'être libre de coder selon leurs méthodes mais il peut être périlleux de reprendre le code d'un tiers.

Les domaines d'application : Perl pour quoi faire ?

L'application première de Perl est l'administration Unix (manipulation de textes, de fichiers et de processus) puis le web avec les CGI (génération, analyse et mise à jour de pages HTML). Mais Perl peut vous aidez dans un cadre beaucoup plus large. Tout les domaines nécessitant la manipulation de chaînes de caractères peuvent trouver des réponses grâce à Perl. Par exemple, en Biologie, Perl permet de développer des applications pour les analyses de codes génétiques. Un module a même été développé spécialement pour cet objectif : CodeGen.

Pour l'Internet , même si le PHP est aujourd'hui utilisé pour les pages web dynamiques, Perl reste l'outil idéal pour le prototypage de sites web : on peut rapidement faire un petit formulaire en Perl. De plus , il est utilisé dans le cas où PHP se révèle insuffisant. Perl est également un langage efficace pour faire du filtrage de courriels, du traitement de log. Le langage est également inclus dans le serveur web Apache avec Mod-Perl. Sa vitesse est alors comparable à celle de PHP, la puissance du langage et la richesse des bibliothèques en plus.

Perl permet de développer tout type d'applications (déconseillé pour le calcul scientifique). Le temps de développement est beaucoup plus court qu'avec du C++, même si l'application sera un peu plus lourde. Parmi les programmes célèbres qui sont écrits en Perl, on trouve, en vrac, la majorité des outils de configuration et d'installation de la distribution Linux Mandrake, Sympa et Majordomo pour la gestion de listes de diffusion, Bugzilla le débuguer de Mozilla et Frozen Bubbles, le jeux qui va révolutionner GNU/Linux ^_^

Perl est la véritable boîte à outils qui permet de monter des gros projets comme d'écrire des petits scripts "kleenex". Son utilisation va donc du prototypage rapide d'applications au développement complet de programmes divers et portables. Quatre mots qualifient au mieux le langage : simplicité, puissance, robustesse et liberté.

Larry Wall : un informaticien atypique

Linguiste de formation, Larry Wall a étudié à U.C. Berkeley et à UCLA mais sans participer au développement d'Unix. Il a été programmeur pour le Jet Propulsion Laboratory de la Nasa. Il a aussi travaillé pour Unisys dans de nombreux domaines, des simulateurs d'événements discrets aux méthodes du développement de logiciels. En 1986, Il a tenté de mettre en place un système d'administration entre deux réseaux très éloignés, via une ligne chiffrée à 1200 bit/s, en utilisant une version modifiée de Netnews. Pour satisfaire ses besoins, il a commencé a concevoir un nouveau langage : Perl.

Outre la création de ce langage, Larry Wall a également contribué à la communauté OpenSource avec des programmes reconnus dans le monde Unix, tel que rn (un éditeur de news), patch, une interface aux multiples fonctionnalités pour le programme GNU diff, metaconfig (génération de programme configure) et warp, un jeu de combat spatial dont il rédigea la première version en BASIC/PLUS à l'Université Pacific de Seattle.

Larry Wall est un grand passionné du Seigneurs des Anneaux, chaque module source est agrémenté d'une citation du livre de JRR Tolkien en rapport avec son contenu. C'est un langage dont la communauté ne se prend pas trop au sérieux ! Larry Wall est également un homme très pieux, il a employé beaucoup de terme religieux dans le vocabulaire de Perl. Par exemple, la fonction de création d'objet s'appelle "bless" : on "bénit l'objet". Pour l'écriture de Perl 6, Larry Wall a rassemblé toutes les spécifications et les modifications attendues dans la nouvelle version dans "les Apocalypses" qui sont retravaillées pour produire ensuite des "exégèses" !

Les Mongueurs de Perl

La communauté des développeurs Perl les "Perl Mongers" est présente sur les cinq continents. Elle s'organise autour d'associations locales pour faire connaître le langage, aider ses utilisateurs, monter des projets communs, faire de la documentation... En France, plusieurs des groupes sont présents : à Toulouse, Marseille, Lyon, dans le Lubéron et à Paris.

Nous avons rencontré l'association "Les Mongueu(r|se)s de Perl" à l'occasion de leur réunion mensuelle, dans une sympathique taverne de la capitale. Tous les mois, une vingtaine d'accros du langage se retrouvent pour discuter Perl et informatique autour d'un bon repas et d'une bière. L'association à été créée par David Landgren (son président) afin de faire venir en France des conférences mais aussi de les démocratiser : la conférence Perl O'Reilly, réputée pour sa qualité, reste très chère. Un des autres objectif l'association est de proposer des infrastructures pour les groupes locaux d'utilisateurs de Perl : espace web, listes de diffusion, documents, CVS ... Aujourd'hui les membres des Mongueurs de Perl commencent eux aussi à participer à des conférences (comme celles organisées par Parinux).

Rencontre avec des "Mongueurs" motivés

Deux membres de l'association, François Désarménien et Sylvain Lhullier nous ont expliqué leurs motivations pour promouvoir le langage. Tout deux travaillent pour Atrid, une petite société de service impliquée dans le logiciel libre et utilisatrice de Perl. Deux de ses produits phare sont d'ailleurs développés en Perl et distribués sous GPL : Mioga (un groupeware) et Logtrend (un logiciel de surveillance réseaux).

Sylvain Lhullier donne aussi des cours et des TD sur Perl à l'Université de Marne-La-Vallée : "Perl n'est pas un langage que je n'ai pas appris dans mon cursus d'études. Je m'y suis intéressé de façon autodidacte sur les conseils d'un enseignant. J'étais alors webmestre pour ma faculté et pour créer un annuaire pour le site, j'ai appris à utiliser Perl : cela correspondait parfaitement à mes besoins. Le langage m'a plu et depuis j'ai la chance de l'enseigner aux étudiants de maîtrise informatique. J'aurais aimé qu'on me l'apprenne lorsque j'étais moi-même en maîtrise !" Quand il ne code pas en Perl pour son travail, Sylvain participe à la promotion du langage et à la mailing list des Mongueurs de Perl "Je me suis inscrit à l'association car Perl est un langage que j'apprécie et lorsqu'on utilise les services d'une association, je trouve normal d'y adhérer".

Perl vs. Python : une différence de culture

François Désarménien utilise Perl depuis plus de dix ans. Il a d'ailleurs écrit un module pour le langage. "Perl est un langage atypique et puissant, il reprend les avantages des boîtes à outils Unix et la totalité des bibliothèques de C. Avec Perl on peut rapidement faire des choses puissantes et satisfaisantes. On est toujours émerveillé par les possibilités du langage". Quand on l'interroge sur Python, dont les champs d'applications se confondent avec ceux de Perl, il sourit et répond :" Avec Python, il n'y a qu'une seule manière de faire les choses. Ça peut être un avantage ou un inconvénient selon les goûts du développeur. Le mode de pensée est très différent." Sylvain ajoute : "Il faut apaiser la guerre des langages. Connaître plusieurs langages, leurs forces et leurs faiblesses, permet de les employer à bon escient. En fonction du contexte, un langage est plus approprié qu'un autre". Si chacun à ses petite préférences, l'ouverture d'esprit reste le meilleur atout pour utiliser le langage adapté et passer outre les traditionnelles guerres de clochers.

"Mongers" comme /M((o|u)ngers|aniacs)*/

À l'origine les Perl Mongers sont le groupe d'utilisateur Perl de New York, crée par Brian D Foy. L'explication du nom "Mongers" est assez cocasse. Il s'agit d'un jeu de mots sur les initiales PM qui signifient à l'origine Perl Module. Le groupe d'utilisateurs de New York s'est appelé NY.pm, comme pour un module. La signification de P reste l'initiale de Perl mais le M a posé quelques soucis. Finalement, il est devenu une une expression régulière : /M((o|u)ngers|aniacs)*/. Mais le nom n'a pas été accepté pour l'enregistrement de l'association. Il s'est transformé pour devenir "Mongers" et "Mongueurs" en France (pour respecter la prononciation). Aujourd'hui le terme de "Mongers" désigne plus largement les hackers Perl et les évangélistes du langage.

Perl sur le net

La documentation de Perl sur l'Internet se caractérise par son abondance : plus de 10,1 Million de page traitant de Perl sont recensées sur Google! Voici quelques liens pour débuter :

[IE7, par Dean Edwards] [Validation du HTML] [Validation du CSS]