[couverture de Linux Dossiers 2]

Perl, langage universel

Copyright © 2004 - Denis Bodor.

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

Cet article est un inédit publié pour la première fois dans Les Dossiers Linux 2, avril/mai/juin 2004.

Chapeau

Programmer son ordinateur reste et restera encore longtemps l'activité la plus passionnante lorsqu'on possède une de ces machines. Mais comment débuter ? Comment être sûr de pouvoir faire tout ce qui nous plaît aujourd'hui comme demain sans tout réapprendre ? Comment s'assurer que tous ses programmes, du plus simple au le plus puissant, fonctionneront partout ? À toutes ces questions, et bien d'autres encore, la réponse tient en un mot : Perl.

C, C++, Basic, Java, Forth, C#, Lisp... inutile de poursuivre davantage cette énumération. Les langages de programmation qu'ils soient compilés ou interprétés ne manquent pas. Cette diversité est une bénédiction pour le programmeur. En effet, chaque langage possède ses avantages, ses domaines d'excellences, ses problèmes et ses limites. Mais cette même diversité pose également un problème majeur : par quoi commencer ?

Ce choix ne doit pas être fait à la légère. Choisir un langage séduisant pour débuter mais imposant rapidement des limites n'est pas la bonne approche. Inversement, choisir un langage puissant comme le C vous permettra, à terme, de créer toutes sortes d'applications, mais vos débuts seront difficiles et pénibles.

Peu de langages permettent de rapidement trouver ses marques et obtenir rapidement des résultats, et en même temps, peuvent vous être utile quel que soit votre niveau de compétence en programmation. Parmi ces langages, il y a Perl. À la fois facile d'accès et puissant, il permet de créer toutes sortes d'applications allant de l'utilitaire système jusqu'à l'application serveur en passant par le jeu (et oui) ou encore les interfaces graphiques ou le Web. Plus récemment, Perl s'est tout naturellement imposé dans le domaine des biotechnologies, ses aptitudes à manipuler les chaînes en faisant le langage idéal pour plusieurs domaines de la génétique moderne.

Voici quelques points importants concernant Perl :

Historique et soupe originelle

Le terme Perl est un acronyme pour « Practical Extraction and Report Language », « langage pratique d'extraction et de génération de rapports » en français. En réalité, il ne s'agit que du plus utilisé des acronymes.

Perl est un langage de programmation créé par Larry Wall en 1987. Il reprend les fonctionnalités présentent dans plusieurs autres langages de programmation comme le C mais aussi des langages de scripts comme sed, awk et sh. Le but originel du langage lors de sa création était l'extraction d'informations depuis des fichiers textes et la génération de rapports en conséquence. Selon la légende, il serait né de la rencontre entre Larry et les limitations d'awk. Perl, encore aujourd'hui, excelle dans ce domaine et dans toutes manipulations et extractions de chaînes de caractères.

Ces capacités ont rapidement conduit Perl à être utilisé pour développer des CGI (Common Gateway Interface). Bien avant l'avènement de langages comme PHP et ASP, Perl permettait déjà de rendre le Web dynamique. C'est encore le cas aujourd'hui à la fois grâce aux très nombreuses applications CGI en Perl mais également via le support du Perl embarqué dans le HTML ou dans les serveurs web (mod_perl). Perl ne s'est donc pas fait « chasser du Web » par PHP, bien au contraire, la syntaxe du langage PHP étant à l'origine inspirée de celle de Perl.

Tom Christiansen
Tom Christiansen
Photo O'Reilly & Associates

Avec le temps et une communauté de programmeurs vraiment très active, Perl est rapidement sorti du cadre d'application qui était alors le sien. Les possibilités d'extension du langage via des modules ont permis à Perl de toucher bien plus de programmeurs. Une base de modules s'est ainsi formée et a grossi jusqu'à atteindre une taille impressionnante. Aujourd'hui centralisée sous l'appellation CPAN (Comprehensive Perl Archive Network) cette base est dupliquée (miroirs) en de nombreux endroits de la planète.

Cette prolifération rapide de modules a permis de tenir le pari incroyable consistant à créer un langage s'adaptant aux goûts du programmeur, par opposition aux langages stricts auxquels le programmeur devait s'adapter. L'évolution du langage lui-même et des modules ont rendu cela possible et ont fait de Perl quelque chose d'unique.

Aujourd'hui, Perl est reconnu comme l'un des principaux langages de développement et fait parti de l'arsenal que tout programmeur se doit de connaître sinon de maîtriser. Plus amusant encore, l'administrateur système ou réseau, lui aussi, compte ce langage parmi ses principaux outils. Enfin, l'utilisateur verra d'un œil avisé toutes les possibilités qui s'offre à lui en faisant usage de Perl.

Philosophie Perl

Comme la plupart des langages et outils UNIX, Perl est non seulement un logiciel mais également une philosophie et une manière d'envisager la programmation. L'une des devises des programmeurs Perl est « There Is More Than One Way To Do It » (TIMTOWTDI) ou, en français, « Il existe plus d'une façon de faire ». Cette phrase résume presque à elle seule la manière très spécifique d'envisager la programmation en Perl.

Randal L. Schwartz
Randal L. Schwartz
Photo O'Reilly & Associates

Le langage étant originellement conçu pour donner un maximum de liberté au programmeur, on en arrive vite à vérifier la devise citée plus haut. Donnez à cinq programmeurs Perl la même tâche à réaliser et vous constaterez que chacun utilisera les fonctionnalités du langage d'une manière différente. Mieux encore, chaque programmeur pourra avoir fait un usage optimal de ces même fonctionnalités. Le langage étant d'une souplesse incroyable, chaque programme fera le travail du mieux possible et ce, de manière totalement différente. À chacun sa manière de faire... il existe plus d'une façon d'y arriver.

La philosophie « adaptative » de Perl permet au langage de toucher toutes sortes de personnes et en particulier les non-programmeurs. Administrateurs système, linguistes ou biologistes travaillent dans des domaines totalement différents et pourtant se réunissent autour de Perl... devenant parfois des JAPH (Just Another Perl Hacker). « JAPH » est un terme inventé par Randal L. Schwartz, figure emblématique du monde Perl, et désignant un Hacker Perl (au sens bidouilleur talentueux).

C'est cette même philosophie de la souplesse qui inspire certains JAPH dans leur tentative de repousser le langage dans ses plus extrêmes limites. Ceci donne dans les faits des concours ou des défis visant à produire un code le plus compact possible ou encore le plus « cryptique » possible. Vous trouverez un bel exemple de ce genre de chose vers la fin du présent magazine.

Larry Wall

Larry Wall
Larry Wall
Photo O'Reilly & Associates

Comme dit plus haut, Larry Wall est le créateur du langage Perl. Il participe encore activement au développement de Perl mais est également responsable de deux autres de ses créations : le lecteurs de news rn et l'utilitaire patch largement utilisé par les développeurs du monde entier. Il est également auteur d'un ouvrage mythique chez O'Reilly, Programming Perl (Programmation en Perl pour l'édition française). Ce dernier est plus souvent désigné sous le terme « camel book » faisant ici référence à l'animal présent sur la couverture du livre.

Larry travaille actuellement sur les spécifications de la version 6 du langage Perl et anime régulièrement des conférences sur ce thème. Larry est Linguiste et non programmeur de formation. C'est peut-être l'une des raisons pour lesquelles le langage est si accessible et si souple.

Si vous voulez en savoir un peu plus sur Larry et la manière qu'il a de voir les choses (et la vie), je vous recommande la lecture d'un des chapitres de Tribune Libre (chez O'Reilly). Disponible en ligne (Tribune Libre : Ténors de l'Informatique Libre - Chapitre 9. Diligence, Patience et Humilité, http://www.oreilly.fr/divers/tribune-libre/fr-ch09.html), ce chapitre écrit par Larry Wall décrit, entre autres choses, sa vision de la communauté Perl.

Larry Wall y fait preuve d'une humilité impressionnante en décrivant la communauté et le monde Perl comme une sorte d'oignon. Larry est le centre de l'oignon car créateur du langage. Cependant, ce n'est pas la partie la plus visible de l'oignon, pas plus que les couche qui entourent le centre. Ce que voient les utilisateurs c'est la vaste surface de la communauté dans laquelle, selon lui, Larry ne joue qu'un rôle minime.

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