Larry Wall crée Perl pour résoudre un ensemble de tâches que les outils
Unix disponibles traitent séparément. Il lui faut parcourir des
fichiers, reconnaître des motifs, convertir des formats, produire des
rapports et coordonner des commandes. Le shell, sed, AWK et C savent
chacun accomplir une partie du travail, mais passer constamment de l’un
à l’autre alourdit les scripts.
Perl rassemble ces capacités dans un langage dont la priorité est
l’utilité pratique. Les expressions régulières font partie de la
syntaxe, texte et nombres se manipulent avec peu de cérémonie, et le
programmeur peut commencer par un script court avant de structurer une
application plus grande.
Ce choix produit une influence considérable sur l’administration des
systèmes et le premier Web. Il crée également une tension durable : un
langage très expressif laisse au programmeur la responsabilité de ne pas
transformer sa liberté en obscurité.
Larry Arnold Wall naît en 1954 à Los Angeles et grandit notamment à
Bremerton, dans l’État de Washington. À Seattle Pacific University, son
parcours passe par la chimie, la musique et l’informatique avant
d’aboutir à un diplôme consacré aux langues naturelles et artificielles.
Il étudie ensuite la linguistique à l’université de Californie à
Berkeley avec son épouse Gloria. Leur projet initial est de travailler
sur une langue peu documentée et de contribuer à la création d’un
système d’écriture. Des raisons de santé les conduisent à rester aux
États-Unis, et Wall poursuit sa carrière dans l’informatique.
Cette formation ne fournit pas à elle seule une recette pour Perl, mais
elle marque sa manière de penser les langages. Une langue naturelle
possède du contexte, des irrégularités, des niveaux de maîtrise et
plusieurs formulations acceptables. Elle n’oblige pas son locuteur à
connaître toute sa grammaire avant de produire une phrase utile.
Wall transpose volontairement une partie de cette richesse dans la
programmation. Là où certains langages recherchent un petit ensemble de
constructions orthogonales, Perl accepte parfois des synonymes et des
raccourcis adaptés à des situations fréquentes.
Avant Perl : rn et patch
Wall acquiert déjà une réputation dans la communauté Unix avant de
publier son langage. Il développe rn, lecteur de nouvelles Usenet
qui aide les utilisateurs à parcourir de nombreux groupes et articles.
L’outil doit mémoriser l’état de lecture, filtrer des sujets et
s’adapter à des usages très personnels.
Il crée aussi patch, programme qui applique à un ensemble de
fichiers les différences produites par un outil comme diff. Au lieu
d’envoyer une copie complète d’un logiciel, un développeur peut
distribuer seulement les changements. Le destinataire les applique même
si son arborescence présente de petites différences.
patch devient une pièce essentielle de la collaboration avant les
plateformes modernes de gestion de code. Son nom finit par désigner
couramment aussi bien le fichier de différences que l’action de le
poser.
Ces outils annoncent plusieurs traits de Perl : lecture tolérante de
texte produit par d’autres programmes, priorité donnée au travail réel
et diffusion du code dans une communauté connectée.
Le problème concret qui mène à Perl
Au milieu des années 1980, Wall travaille sur un projet impliquant
plusieurs machines Unix et des données réparties. Il doit extraire des
informations, relier des rapports et automatiser des opérations
récurrentes. AWK excelle dans le traitement ligne par ligne ; sed
transforme du texte ; le shell lance des commandes ; C donne davantage
de contrôle mais demande beaucoup plus de code.
Écrire une chaîne différente pour chaque cas devient coûteux. Wall
commence donc un langage qui combine les expressions régulières et le
modèle motifs-actions d’AWK, les commandes et flux du shell, ainsi que
des structures de données et un contrôle proches des langages généraux.
Perl 1.0 est publié sur Usenet le 18 décembre 1987. Le message initial
le présente comme un remplacement possible de certaines utilisations
d’AWK et de sed, pas comme une théorie universelle de la
programmation.
Le nom est interprété plus tard par plusieurs rétroacronymes, notamment
Practical Extraction and Report Language. L’usage officiel est
toutefois Perl, pas un sigle dont chaque lettre aurait déterminé la
conception initiale.
Pourquoi Perl est efficace pour le texte
Dans Perl, la reconnaissance de motifs n’est pas reléguée à une
bibliothèque périphérique. Une expression régulière s’écrit directement
dans le code et peut déclencher une substitution, extraire des groupes
ou contrôler une branche.
Un script minimal peut, par exemple, afficher les lignes contenant un
code d’erreur :
while (<STDIN>) {
print if /ERROR\s+\d+/;
}
La boucle lit implicitement chaque ligne de l’entrée standard. La
variable par défaut contient la ligne courante ; le motif s’y applique
sans argument explicite ; print la réutilise. Cette densité est utile
à un programmeur qui connaît les conventions, mais elle peut désorienter
celui qui ne voit pas les valeurs implicites.
Perl propose également tableaux, tables de hachage et conversions
contextuelles entre chaînes et nombres. Il distingue un contexte
scalaire d’un contexte de liste : une expression peut produire une
valeur ou plusieurs selon la manière dont elle est appelée.
Ce système permet des formulations compactes et adaptées au traitement
de flux. Il demande en retour de comprendre le contexte choisi par
l’opérateur voisin. Une ligne syntaxiquement correcte peut avoir un sens
surprenant si le lecteur ne sait pas quel contexte est attendu.
« Il y a plus d’une façon de le faire »
La formule associée à Perl, There’s more than one way to do it,
souvent abrégée TIMTOWTDI, résume sa méfiance envers l’idée qu’un
problème possède toujours une unique expression légitime.
Cette pluralité aide à adapter le code à son domaine. Un administrateur
peut écrire un filtre compact ; une application plus longue peut
employer des fonctions nommées, des modules et un style explicite. Le
langage autorise une progression plutôt qu’un seul niveau de cérémonie.
La liberté n’est cependant pas gratuite. Deux programmes Perl
équivalents peuvent employer des idiomes très différents. Les variables
spéciales, expressions régulières denses et effets implicites favorisent
parfois des démonstrations brillantes mais difficiles à maintenir.
Les outils use strict et use warnings, les conventions de style, les
tests et les revues de code répondent à ce risque. Ils montrent qu’un
langage permissif a besoin d’une discipline sociale et outillée.
TIMTOWTDI signifie que plusieurs solutions sont possibles, pas que
toutes sont également lisibles.
Perl 4 : documentation et communauté en expansion
Les premières versions évoluent rapidement au contact des utilisateurs.
Perl 2 adopte notamment une bibliothèque d’expressions régulières plus
puissante ; Perl 3 améliore la manipulation de données binaires ; Perl 4
stabilise la branche utilisée au début des années 1990.
La publication de Programming Perl par Larry Wall et Randal L.
Schwartz, bientôt surnommé le Camel Book, donne au langage une
référence structurée. La documentation ne se contente pas d’énumérer des
fonctions : elle transmet les idiomes, l’humour et la culture de la
communauté.
Usenet permet aux utilisateurs de signaler des problèmes, proposer des
correctifs et échanger des solutions. Wall conserve alors un rôle
décisif dans la direction du langage, tout en intégrant les
contributions d’un nombre croissant de développeurs.
Ce modèle mêle autorité éditoriale et développement ouvert. Il offre une
cohérence que n’aurait pas une collection arbitraire de correctifs, mais
crée aussi une dépendance envers le temps et les décisions d’une
personne centrale.
Perl 5, publié en 1994, constitue une refonte majeure. Il introduit
notamment les références, des structures de données imbriquées, les
fermetures lexicales, un système de modules et les bases d’une
programmation orientée objet.
Les références permettent de construire des tableaux de tables, des
arbres ou des graphes sans que le langage fournisse une structure
spéciale pour chaque cas. Les modules créent des espaces de noms et
facilitent la distribution de code réutilisable. L’objet repose sur des
mécanismes relativement réduits, dont bless, plutôt que sur un modèle
de classes très prescriptif.
Perl peut dès lors rester un langage de scripts rapides tout en soutenir
des applications plus vastes. Cette compatibilité avec les petits
programmes existants est une force d’adoption, mais elle oblige aussi le
langage à conserver de nombreux comportements historiques.
La célèbre formule de Wall selon laquelle Perl 5 introduit « tout le
reste, y compris la capacité d’introduire tout le reste » pointe cette
extensibilité : la version ne clôt pas la conception, elle fournit des
mécanismes pour que l’écosystème l’étende.
CPAN : l’écosystème comme partie du langage
Le Comprehensive Perl Archive Network, lancé au milieu des années
1990 par la communauté, organise la publication et l’installation des
modules. CPAN ne vient pas de Wall seul : Jarkko Hietaniemi et de
nombreux mainteneurs construisent l’infrastructure, tandis que des
milliers d’auteurs alimentent le catalogue.
Son importance dépasse le nombre de paquets. CPAN donne des conventions
de nommage, des métadonnées, des tests et un chemin de distribution
commun. Un programmeur peut réutiliser une bibliothèque de base de
données, de courrier électronique, d’analyse de formats ou de protocole
sans repartir de zéro.
Ce modèle annonce les registres devenus essentiels à
Python,
JavaScript, Rust et d’autres communautés.
Il révèle en même temps leurs risques : qualité inégale, dépendances
abandonnées, confiance accordée aux auteurs et difficulté de maintenir
un graphe de paquets sur plusieurs décennies.
Perl montre tôt qu’un langage ne se résume plus à son interpréteur et à
sa syntaxe. Sa valeur dépend aussi de la facilité avec laquelle une
communauté partage, teste et maintient ses solutions.
Perl et le premier Web dynamique
Dans les années 1990, les serveurs web utilisent souvent la Common
Gateway Interface pour lancer un programme qui génère une réponse
HTTP. Perl est déjà installé sur de nombreux systèmes Unix, manipule
facilement les chaînes et possède des bibliothèques réseau. Il devient
un choix naturel pour formulaires, livres d’or, moteurs de recherche et
premiers sites dynamiques.
Cette adoption vaut à Perl le surnom de « ruban adhésif d’Internet ».
Des scripts courts relient serveur, fichiers, courrier et base de
données à une vitesse difficile à atteindre avec les chaînes de
compilation plus lourdes de l’époque.
Le modèle CGI crée néanmoins un nouveau processus par requête et les
scripts écrits rapidement peuvent comporter des failles : entrées non
validées, commandes shell construites avec des données utilisateur ou
permissions excessives. Ces problèmes ne sont pas propres à Perl, mais
sa facilité de déploiement les rend visibles à grande échelle.
Des solutions comme mod_perl, puis des frameworks et serveurs
applicatifs plus structurés, répondent aux limites de performance et
d’architecture. Elles montrent le passage d’une automatisation
ponctuelle à des services durables.
Une culture du langage assumée
Wall ne présente pas Perl comme une construction mathématiquement
minimale. Dans ses conférences, il le compare aux langues naturelles et
défend une optimisation pour l’expression après apprentissage plutôt que
pour la seule simplicité du premier contact.
La syntaxe utilise des indices visuels : $ pour une valeur scalaire,
@ pour un tableau, % pour une table. Ces marqueurs rendent certaines
informations locales très visibles, mais ajoutent un vocabulaire que le
débutant doit assimiler.
Le langage valorise aussi trois « vertus » humoristiques du programmeur
— paresse, impatience et orgueil — dont le sens technique est
d’automatiser le travail répétitif, demander un retour rapide et
produire un code dont on puisse être responsable. Ces formules
participent à une identité communautaire aussi reconnaissable que la
syntaxe.
Cette culture favorise conférences, groupes locaux et partage de
modules. Elle a parfois aussi renforcé l’image d’un langage réservé à
ceux qui maîtrisent ses jeux de mots et ses idiomes. La pédagogie doit
alors distinguer l’humour qui rassemble de l’obscurité qui exclut.
Perl 6, puis la séparation avec Raku
En 2000, Wall annonce une refonte profonde appelée Perl 6. Treize années
de compatibilité limitent les changements possibles dans Perl 5 ; la
nouvelle branche doit pouvoir repenser syntaxe, types, concurrence et
modèle objet.
Wall dirige la conception linguistique à travers des documents appelés
Apocalypses et Synopses. L’implantation mobilise cependant de
nombreux projets et collaborateurs, dont Parrot puis Rakudo, avec Damian
Conway, Allison Randal, Dan Sugalski, Jonathan Worthington et beaucoup
d’autres.
L’ambition ralentit la livraison d’un langage stable. Une première
spécification officielle accompagnée d’une implantation utilisable
arrive en 2015, bien plus tard que beaucoup ne l’avaient anticipé.
Pendant ce temps, Perl 5 continue d’évoluer sous sa propre communauté.
En 2019, Perl 6 adopte le nom Raku. Le changement clarifie que Raku
est un langage distinct de Perl, même s’ils appartiennent à la même
famille historique. Il évite également de présenter Perl 5 comme une
version condamnée à attendre son remplacement.
Cette séparation constitue une leçon de conception : une refonte peut
libérer l’innovation, mais elle doit reconstruire un écosystème, des
outils et une confiance que la compatibilité conservait gratuitement.
Pourquoi Larry Wall compte encore
Perl a perdu une partie de sa visibilité face à Python, PHP, Ruby puis
JavaScript côté serveur. Cette
évolution ne rend pas ses contributions obsolètes. Les expressions
régulières intégrées, les scripts capables de grandir, les registres de
paquets et la culture du logiciel distribué ont influencé le paysage
dans lequel ces langages se sont développés.
Wall a surtout défendu une idée rarement neutre : un langage est destiné
à des humains dotés d’habitudes, de contexte et de niveaux d’expertise
différents. La régularité formelle compte, mais elle n’est pas le seul
critère ; la capacité à exprimer rapidement une intention réelle compte
aussi.
Perl montre les deux faces de ce choix. Sa souplesse peut produire un
outil remarquable en quelques lignes et permettre une migration
progressive vers une application complète. Elle peut aussi accumuler
implicites et idiomes jusqu’à rendre le programme hostile à son prochain
lecteur.
L’héritage de Wall ne consiste donc pas à recommander Perl pour chaque
projet. Il oblige les concepteurs de langages et les équipes à poser une
question plus précise : quelle liberté aide réellement l’utilisateur, et
quelle convention faut-il ajouter pour que cette liberté reste
partageable ?
Chronologie
- 1954 : naissance de Larry Arnold Wall à Los Angeles.
- Années 1970 : études de langues naturelles et artificielles à
Seattle Pacific University.
- Début des années 1980 : développement du lecteur Usenet
rn.
- 1985 : première diffusion de
patch, outil d’application de
différences entre fichiers.
- 1987 : publication de Perl 1.0 sur Usenet le 18 décembre.
- 1988 : Perl 2 améliore notamment le moteur d’expressions
régulières.
- 1989 : Perl 3 ajoute la gestion de données binaires.
- 1991 : Perl 4 et le premier Programming Perl stabilisent la
diffusion du langage.
- 1994 : publication de Perl 5, refonte extensible avec références
et modules.
- 1995 : mise en place de CPAN par la communauté Perl.
- Fin des années 1990 : Perl devient un langage majeur de
l’administration Unix et du Web dynamique.
- 2000 : annonce du projet Perl 6.
- 2015 : première spécification officielle de Perl 6 accompagnée
de Rakudo utilisable.
- 2019 : Perl 6 prend le nom Raku et affirme son statut de langage
distinct.
Questions fréquentes
Pourquoi Larry Wall a-t-il créé Perl ?
Il devait automatiser sur Unix des tâches combinant extraction de
données, reconnaissance de motifs, conversion de formats et production
de rapports. Les outils existants couvraient séparément ces besoins ;
Perl les réunit dans un langage de script général.
Que signifie le nom Perl ?
Le nom n’est pas né comme un sigle strict. Des développements comme
Practical Extraction and Report Language ont été proposés après coup
et décrivent bien certains usages, mais Perl reste le nom officiel.
Perl est-il nécessairement illisible ?
Non. Il permet d’écrire du code structuré, testé et explicite. Sa
densité, ses variables implicites et ses nombreux idiomes rendent
toutefois l’obscurité plus facile si une équipe n’utilise pas strict,
les avertissements et des conventions communes.
Quel rôle CPAN a-t-il joué ?
CPAN a donné à la communauté un catalogue partagé de modules, avec
outils d’installation, métadonnées et tests. Il a transformé Perl en
écosystème et servi de modèle précoce aux registres de paquets modernes.
Perl et Raku sont-ils le même langage ?
Non. Raku est issu du projet autrefois appelé Perl 6, mais il possède sa
propre spécification, ses implantations et sa communauté. Perl continue
séparément la lignée de Perl 5.