Dimanche 18 Juin 2006 à 09h59:50 GMT -4.00
Un langage de programmation utilisé dans Linux
Perl (
Practical Extraction and Report Language ou
langage pratique d'extraction et de génération de rapports ; ce nom est un rétro-acronyme) est un langage de programmation créé par Larry Wall en 1987 et reprenant des fonctionnalités du langage C et des langages de scripts sed, awk et shell (sh). On écrit généralement le nom de ce langage avec un
P majuscule pour désigner le langage et un
p minuscule en parlant de l'interpréteur : « seul perl analyse correctement Perl. »
Le but
Perl est né du besoin de disposer d'un langage optimisé pour l'extraction d'informations de fichiers textes et la génération de rapports. Voici quelques-unes des devises qui lui sont couramment associées :
- There Is More Than One Way To Do It (TIMTOWTDI) qui pourrait se traduire par Il y a plus d'une façon de le faire.
- Perl : la tronçonneuse suisse des langages de programmation.
- Perl : l'assistant idéal des administrateurs de système.
Sa souplesse autorise l'emploi de plusieurs modèles de programmation : programmation procédurale, programmation fonctionnelle et POO.
- Les puristes moyens de l'OO ne considèrent pas Perl comme un « vrai » langage objet
- les puristes stricts, eux, ne considèrent aucun autre langage que Smalltalk ou Common Lisp, où tout est objet, comme "vrais" langages objet.
Les moyens
Perl vise la commodité pour le programmeur (existence de raccourcis qui le font qualifier de langage "diagonal") plutôt qu'un souhait esthétique d'architecture stricte (langages « orthogonaux »). Perl est considéré surtout comme un langage de script et a été qualifié de "ciment assurant la cohésion du web", étant un des langages CGI les plus populaires. Compte-tenu du rôle qu'a eu Perl dans le développement de la "nouvelle économie", une boutade prêtait à la mairie de New York l'intention de rebaptiser Wall Street du nom de son inventeur, ce qui aurait au moins le mérite de ne pas entraîner du tout de frais pour le contribuable !
Perl a un statut de logiciel libre, distribué sous licence artistique et GPL. Perl est porté sur la plupart des systèmes d'exploitation mais excelle particulièrement en environnement POSIX (Cygwin sous Microsoft Windows, Linux, Mac OS X etc.) ; il devient populaire aussi sous Microsoft Windows sans Cygwin grâce à la facilité d'installation de la distribution gratuite ActivePerl (dont la version 5.8 permet l'usage de l'interface graphique) et d'environnements de développement gratuits comme SciTE.
L'intégration dans l'existant
Les programmes Perl sont intégralement portables entre Linux, Mac OS X (ou autre UNIX) et Windows malgré les désignations de fichiers différentes de ces systèmes (Perl remplace tout seul si besoin les « / » par des « \ »). Un exemple du champ d'action de Perl est son utilisation comme script CGI pour faire tourner Wikipedia jusqu'en janvier 2002. Il constitue en effet un bon langage de prototypage.
Perl permet l'usage du moteur d'interface graphiques Tk pour effectuer des entrées-sorties conformes à l'état de l'art. On désigne parfois l'ensemble sous le nom générique Perl/Tk. L'extension Tk est intégrée à ActivePerl depuis la version 5.8 du langage.
Le mécanisme
Bien que Perl profite de la plupart des facilités d'un langage interprété, à proprement parler il n'interprète et n'exécute pas (aucun interpréteur ne le fait, d'ailleurs) le code source une ligne à la fois. Perl compile d'abord le programme entier dans un bytecode intermédiaire (assez dans l'esprit du code objet Java), l'optimisant au passage, et exécute alors ce bytecode. Il est ainsi possible de compiler un programme Perl en bytecode pour s'épargner les phases de compilation lors d'exécutions ultérieures, bien que l'"interpréteur" reste requis pour exécuter ce code.
Les phases de traduction des noms de variables en adresses, traduction de libellés d'opération en code binaire et de traduction en binaire des constantes exprimées en caractères sont d'ailleurs bien connues depuis le milieu du XXe siècle, puisque ce sont très précisément les trois fonctions principales d'un assembleur.
L'avenir proche
Perl 6 est en cours de développement. Il tournera dans la machine virtuelle Parrot. Un canular organisé par l'équipe de direction de l'éditeur O'Reilly avec la complicité de Larry Wall et Guido van Rossum (avec annonce d'un livre imaginaire dont l'annonce donnait le fac-simile) a annoncé à une époque la fusion en un langage unique nommé aussi Parrot de Perl 6 et de Python, à la grande panique de certains aficionados des deux langages.
En parallèle, Autrijus Tang, aidé d'un petit groupe de développeurs, est en train de développer un interpréteur Perl 6 en Haskell nommé Pugs.
Exemples de code
Certaines personnes affirment avec humour que Perl veut dire 'Pathologically Eclectic Rubbish Lister' (collectionneur pathologique de déchets variés) à cause de l'utilisation intensive de caractères spéciaux chargés de sens dans la syntaxe du langage, comme on peut le voir dans cet exemple de programme:
# Un exemple de programme en Perl
$message = "À l'endroit : 'camel'.\n";
print $message; $message =~ s/endroit/envers/;
$message =~ s/('\w+')/reverse($1)/e; print $message;
exit 0
et sa sortie à l'écran :
À l'endroit : 'camel'. À l'envers : 'lemac'.
Les troisième et quatrième lignes de cet exemple montrent l'usage d'expressions rationnelles.
Ces caractères spéciaux sont liés à la puissance de traitement de Perl :
- scalaires désignés par $ : $nom = "Toto"; $z=3;
- tableaux désignés par @, indexés par [] : $nom[95] = "Val d'Oise"; (le 96e élément du tableau est comme les autres un scalaire!)
- tableaux associatifs, ou hashs désignés par %, indexés par {} : $code{"Val d'Oise"} = 95; (leurs éléments sont des scalaires aussi)
Aspects communautaires
Perl a une base d'utilisateurs vaste et diversifiée. Pour plusieurs types d'utilisateurs du langage, c'est d'ailleurs leur seul point commun. Les administrateurs système en sont friands, les développeurs en apprécient la concision et la puissance, des linguistes et des biologistes - habituellement peu enclins à se pencher sur le code - l'utilisent comme langage de référence dans leurs applications métiers. Perl est particulièrement apprécié en bio-informatique où les programmes font l'objet de remaniements constants.
La base CPAN regroupe et met gratuitement à la disposition des utilisateurs de Perl du monde entier 15,4 millions de ligne de code (juillet 2004) sous forme de modules Perl et de synopsis montrant comment les mettre en œuvre. L'effet boule de neige est indiscutable. La synergie aussi.
Opinions
Perl suscite de forts sentiments aussi bien chez ses partisans que chez ses détracteurs.
Pour
Les programmeurs qui aiment Perl font typiquement référence à sa puissance, son caractère explicite et sa facilité d'utilisation. Perl offre une infrastructure pour la plupart des tâches courantes de programmation, telles que les chaînes et le traîtement des listes. D'autres tâches, telles que la gestion de la mémoire, sont prises en charge automatiquement et en toute transparence. Les programmeurs issus d'autres langages que Perl trouvent souvent que tous les problèmes auxquels ils s'étaient trouvés confrontés par le passé ne surviennent plus avec Perl. Ainsi Larry Wall le résuma :
Quelle est la sonorité de Perl ? N'est-ce pas le son d'un mur contre lequel les gens ont cessé de se taper la tête ?
En sus de ces bénéfices pratiques, un certain nombres de programmeurs semblent tout simplement apprécier de travailler avec Perl. Les premiers numéros de The Perl Journal comportaient une page intitulée « Qu'est-ce que Perl ? », qui concluait ainsi :
Perl est amusant. En ces jours de jargon d'auto-satisfécit, de standards imprévisibles et conflictuels, et de systèmes propriétaires qui découragent toute volonté de voir plus loin que le bout de son nez, les gens ont oublié que la programmation est supposée être amusante. Je ne veux pas dire par là la satisfaction de voir nos beaux programmes fonctionner comme ils le devraient, mais l'acte littéraire d'écriture créative qui constitue ces programmes. Avec Perl, le voyage est aussi agréable que la destination…
Quelles que soient les raisons, il existe clairement une vaste communauté de personnes passionnées par Perl, ce que démontre les milliers de modules qui constituent le CPAN, et les centaines de propositions formelles qui ont été proposées comme RFC pour Perl 6.
Source :
http://fr.wikipedia.org/wiki/Perl