=encoding iso-8859-1 =meta title Perl, langage d'aujourd'hui et de demain =meta author Sébastien Aperghis-Tramoni, sebastien@aperghis.net =meta presdate Journée Méditerranéenne du Logiciel Libre 2007 = Perl +>> * I * langage interprété et dynamique * libre : GNU GPL et Artistic License * créé en 1987 par Larry Wall - = Larry Wall +>> * Caractéristiques : =for html +>> * lunettes carrées * moustache * chemise hippie - - = Perl - Historique +>> * Perl 1.000 - 1987 * Perl 3.000 - 1989 * Perl 4.000 - 1991 * Perl 4.036 - 1993 - = Perl - Historique +>> * Perl 5.000 - 1994 * Perl 5.001 - 1995 * Perl 5.002 - 1996 * Perl 5.003 - 1996 * Perl 5.004 - 1997 * Perl 5.005 - 1998 - = Perl - Historique +>> * Perl 5.6 - 2000 * Perl 5.8 - 2002 - = Perl - Caractéristiques +>> * à l'origine, langage de glue * intermédiaire entre le shell, C, C d'un côté et C de l'autre * ajouts de langages fonctionnels comme Lisp * maintenant, langage dynamique généraliste * extrêmement portable * très stable - = Perl - Points forts +>> * multi-paradigmes : impératif, fonctionnel, orienté objet * types de base : scalaire (chaîne, nombre), tableau, hash * gestion de mémoire par ramasse-miettes * expressions régulières * OO : surcharge d'opérateur, fermetures * Unicode * threads - = Perl - Points faibles +>> * faiblement typé * très (trop) permissif * paradigme objet très (trop) simple * ramasse-miettes par comptage de références * syntaxe devenue lourde pour certaines opérations - = CPAN +>> * I * collection centralisée et distribuée de modules * L * 4.0 Go, plus de 12500 modules, plus de 6000 auteurs * 253 miroirs - = CPAN +>> * I<« CPAN is the language, Perl is just its syntax »> - Audrey Tang * véritable richesse de Perl - = CPAN - Sélection +>> * XML +>> * C, C, C, C * C, C - * sérialisation +>> * C * C, C, C, C * C, C, C, C - - = CPAN - Sélection +>> * courriel +>> * C, C, C * C, C, C et tous les modules du I * C, C, C, C - - = CPAN - Sélection +>> * web +>> * C, C * C, C, C - * HTML +>> * C, C, C, C - = CPAN - Sélection +>> * protocoles réseau +>> * C, C, C, C, C, C, C, C * C, C, C - * réseau bas niveau +>> * C, C, C - - = CPAN - Sélection +>> * bases de données +>> * C * MySQL, PostgreSQL, SQLite, Oracle, JDBC, ODBC, Sybase, ADO DB, Unify et encore plus... * C, C * C - - = CPAN - Sélection +>> * ORM +>> * C, C * C, C, C, C - - = CPAN - Sélection +>> * templates +>> * C, Petal, Mason, Template Toolkit - * frameworks web modernes +>> * Maypole, Catalyst, Jifty - = CPAN - Sélection +>> * langages +>> * Inline : C, Java, Python, Ruby, Tcl, Befunge, Lua - * bibliothèques externes +>> * XS * SWIG * P5NCI - - = CPAN - Sélection +>> * interfaces graphiques +>> * Tk, Gtk, WxWidgets, Qt, Prima * GUI natives : Win32, Aqua (Mac OS X), X11 - * images +>> * C, C, C, C - * archivage +>> * C, C, C, C - - = Applications connues +>> * Rational ClearCase (gestion de configuration) et ClearQuest * SysTran (logiciel de traduction linguistique) * Request Tracker, OTRS, Bugzilla (gestionnaires de bugs) * SlimServer (logiciel pilotant les systèmes musicaux sans fil de Slim Devices / Logitech) - = Applications connues +>> * Movable Type (plateforme de publication pour entreprises) * Blosxom (blog et gestion de contenu) * Koha (gestion de bibliothèque) * TWiki, Kwiki, MojoMojo (wikis) * SVK (système de contrôle de version) * Swish-e, Plucene (moteurs d'indexation) - = Applications connues +>> * Sympa (gestionnaire de listes de diffusion) * SpamAssassin (filtre courriel) * Open Webmail * Webmin (administration de systèmes par interface web) * DrakX, Urpmi (installation et gestion des paquets sous Mandriva) * BackupPC (sauvegarde) * Frozen-Bubble (jeu d'arcade) - = Utilisateurs +>> * sites web : +>> * Amazon, eBay, Price Minister, ShopZilla, Ticket Master, Booking, IMDb, Yahoo!, Slashdot, Live Journal, Friendster, Flickr, Google - * banques : +>> * Citigroup, Morgan Stanley, Deutshe Bank, Bank of America, UBS (Union de Banques Suisses), BNP Paribas - - = Utilisateurs +>> * médias : +>> * AFP (Agence France Presse), BBC - * organismes gouvernementaux : +>> * NASA, ESA, Météo France, Institut Météorologique Norvégien - * opérateurs et associés : +>> * France Télécom - Orange, Free Télécom, Vodafone, Sifira, OVH, Gandi, VeriSign - - = Le futur +>> * une version majeure : Perl 5.10 * un nouveau langage : Perl 6 - = Perl 5.10 +>> * très (trop) longtemps en développement * à cause de la stabilité de Perl 5.8 * disponible d'ici très peu de temps * I<« After lunch, before Christmas »> - = Perl 5.10 +>> * plusieurs parties internes restructurées * ajout de protections préventives * consommation mémoire moindre * moteur d'expressions régulières dérécursé * certaines fonctionnalités de Perl 6 - = Perl 5.10 - Syntaxe +>> * defined-or +>> * avant : C<$a || $b> * et si C<$a == 0> ? => incorrect * d'où : C * maintenant : C<$a // $b> * et surtout : C<$var //= $default> - - = Perl 5.10 - Syntaxe +>> * tests sur les fichiers empilables +>> * avant : C<-f $file and -w $file> * maintenant : C<-f -w $file> - - = Perl 5.10 - Syntaxe +>> * smart match +>> * opérateur C<~~> * permet de comparer magiquement * I perlsyn - - = Perl 5.10 - Syntaxe +>> * smart switch +>> * basé sur le smart match - * =begin filter perl given ($var) { when (undef) { say '$var non défini' } when (@array) { say '$var est dans @array' } when (%hash) { say '$var est une clé de %hash' } when (\&code) { say 'code($var) est vrai' } when (qr/../) { say '$var correspond à la regexp' } default { ... } } =end filter - = Perl 5.10 - Syntaxe +>> * variable d'état +>> * comme les variables C en C * C - * =begin filter perl sub callback { state $counter = 100; ... } =end filter - = Perl 5.10 - Syntaxe +>> * nouveautés non activées par défaut * C * C pour toutes les activer * ainsi que C * ainsi que C - = Perl 5.10 - Regexp +>> * Perl à la traîne derrière PCRE * intégration de leurs fonctionnalités * ajout de nouvelles * correction de bugs - = Perl 5.10 - Regexp +>> * moteur dérécursé * optimisations : I, Aho-Corasick * moteur interchangeable - = Perl 5.10 - Regexp +>> * quantifieurs possessif : C, C<*+>, C<++>, C<{n,m}+> * comme le quantifieur avide, mais ne rend jamais * exemple : C<"aaaa" =~ /a++a/> échoue - = Perl 5.10 - Regexp +>> * buffers de capture * nouvelle manière de référencer : C<\g{I}> * avant : C * maintenant : C - = Perl 5.10 - Regexp +>> * buffers de capture I * stockés dans C<%+> (dernière capture) et C<%-> (toutes les captures) * exemple : =begin filter perl /(? \w+) = (? \w+)/; $name = $+{name}; $value = $+{value}; =end filter - = Perl 5.10 - Regexp +>> * nouveaux verbes de contrôle du retour arrière (I) * (*FAIL) (*ACCEPT) (*PRUNE) (*PRUNE:NAME) (*MARK) (*MARK:NAME) (*:NAME) (*SKIP) (*SKIP:NAME) (*THEN) (*THEN:NAME) (*COMMIT) (*COMMIT:NAME) - = Perl 5.10 - Regexp +>> * moteur interchangeable * islandais fou : Ævar Arnfjörð Bjarmason * C * C * C * C - = Perl 5.10 - Objets +>> * objets inversés (I) * existent déjà sur le CPAN : C, C, C * mais meilleur support grâce à C - = Perl 5.10 - Objets +>> * ordre de résolution des méthodes (MRO) * auparavant fixe, par profondeur * maintenant modifiable * algorithme de linéarisation C3 (Dylan, Python) * aussi disponible pour Perl 5.8 avec C - = Perl 5.10 - Portabilité +>> * meilleur support Win32 * meilleur support OpenVMS * meilleur support MVS / OS/390 / z/OS * support Cray XT4/Catamount - = Perl 5.10 - Divers +>> * user lexical pragma * prototype C<_> * C * variables lexicales plus rapides * Unicode 5.0.0 * opérations UTF-8 plus rapides * constantes plus économes en mémoire * ... - = Perl 5.12 +>> * cycle de développement plus court que pour 5.10 * probablement 2-3 ans * fonctionnalités prévues : +>> * abstraction du système de fichiers pour support Unicode * extension des nouveaux opérateurs comme C - - = Perl 6 +>> * véritablement un nouveau langage * nouvelles inspirations : Ruby, OCaml, Haskell * compilateur Perl 6 écrit en Perl 6 * compilé en I * exécuté sur une machine virtuelle, Parrot - = Parrot +>> * machine virtuelle générique * portabilité de Perl * optimisée pour écrire des compilateurs pour langages dynamiques * langage d'assemblage cohérent, sans bizarreries dues à l'architecture +>> * voir les articles publiés dans Linux Magazine France n°97, 98 et 99 - - = Perl 6 +>> * fondamentaux de Perl +>> * stabilité * longévité - * Perl 5 utilisé depuis plus de 12 ans * Perl 6 conçu pour durer autant * pas d'urgence, Perl 5 stable - = Perl 6 =img images/perl6-timeline.gif = Conclusion +>> * langage mature * Perl 5.8 stable * Perl 5.10 taillé pour les performances et la production * Perl 6 d'ici quelques années = Questions ? = Merci