Article publié dans Linux Magazine 118, juillet/août 2009.
Copyright © 2009 - Sébastien Aperghis-Tramoni
Pour cette nouvelle édition, les mongueurs d'Oslo.pm se sont associés à FriProg pour jumeler le Nordic Perl Workshop au salon Go Open, que l'on peut comparer à un événement de type Solutions Linux, mais à l'échelle de la Norvège. Vu la taille et le public de Go Open, le Nordic Perl Workshop a en fait été intégré comme seconde partie "technique" de Go Open, majoritairement en anglais, le reste de ce salon se déroulant bien évidemment en norvégien. Il n'y a pas de quoi se plaindre, la taille de l'ensemble ayant permis d'attirer un grand nombre de sponsors, autorisant ainsi la venue de nombreux orateurs prestigieux.
Détail amusant, cette double conférence est organisé dans le bâtiment du Sosialistisk Venstreparti (Parti socialiste de gauche), et plus précisément dans un théâtre pour la partie Go Open, et dans des salles de conférence au 11e et 12e étages du bâtiment pour la partie Nordic Perl Workshop. On ne pouvait pas traîner longtemps en fin d'après-midi car avaient lieu le soir des représentations de la pièce de théâtre Mamma mia!
L'ouverture de Go Open se déroule en norvégien, avec seulement une phrase en anglais pour s'excuser de ce fait. Ce n'est que par la suite qu'on m'expliquera que la seconde femme qui avait succédé à la première au micro était une Ministre, plus précisément Heidi Grande Røys, Ministre de l'Administration et de la Réforme du Gouvernement. Problème d'organisation, les détails sur le salon ne seront donnés qu'après (alors que je me serai déjà éclipsé pour écouter Larry Wall). Cela m'aura néanmoins permis de voir la grande salle et son écran géant affichant une belle liste de sponsors.
Salve Nielsen ouvre la partie Perl de cette conférence dans un restaurant en face du théâtre, où une partie de la salle est aménagée pour cela.
Larry commence comme souvent avec des généralités qu'il s'amuse à détourner, tel le modèle en cascade dont il trouve qu'avec les nombreux retours, en particulier si on ajoute de l'XP, ressemble à une pelote de laine. Comment savoir si on a terminé ? Larry compare avec des états d'énergie : c'est quand on atteint un minimum. Mais pour passer d'un minimum local à un autre minimum, inférieur, cela demande de l'énergie.. ou un tunnel quantique.
Il rappelle le pourquoi de Perl 6 : hormis une longue liste de
défauts qu'il fait défiler, Perl 5 est parfait :-)
361 RFCs avaient été recueillies en 2000. Très difficile de répondre
à tout ce qui été demandé, autant tout changer. Le but de Perl 6
est d'être «the Martha Stewart of languages» ; ne pas essayer d'être
meilleur que les autres, mais d'être plus souple, plus facilement
adaptable. Il montre STD.pm (le fichier qui décrit la syntaxe standard
de Perl 6) et la facilité pour modifier et faire muter le langage.
On peut facilement concevoir un use COBOL
ou n'importe quoi d'autre,
tout n'étant plus finalement que des DSL (Domain-Specific Language).
Le méta-méta-méta-but de Perl 6 est -Ofun
, c'est-à-dire rester
amusant. Cela n'est pas toujours évident, et Larry indique que dans
l'édition japonaise de Programming Perl on trouve une note à côté
du slogan «lazyness, impatience, hubris» signalant qu'il s'agit
d'un trait d'humour :-)
Quand est-ce que Perl 6 sera prêt ? La réponse standard est « pour Noël ». Avant 2040, probablement avant 2014. En pratique, le langage étant précisément défini par une spécification qui est elle-même traduite sous forme d'une suite de tests, on sait que l'implémentation est complète quand tous les tests passent.
« Reduce, reuse, recycle » sont les maîtres mots des
changements des opérateurs entre Perl 5 et Perl 6. Ainsi,
<>
qui était glob()
en Perl 5, a été recyclé en
constructeur de tableaux en Perl 6, parce qu'on construit plus
souvent des tableaux qu'on appelle glob()
. q[...]
a inspiré
#[...]
, et de même q[[...]]
pour #[[...]]
. Les avertissements
et les exceptions ont été fusionnés puisqu'il s'agit à la base de
la même chose, ne différant que dans la poursuite ou l'arrêt du
programme.
Les opérateurs ont été rationalisés, mais s'il y en a une grande quantité, et même encore plus avec les combinaisons de méta-opérateurs, le tout suit une certaine logique, qu'on retrouve dans la table périodique des opérateurs assemblée par Mark Lentczner.
Dans les nouveautés, un peu pêle-mêle : les blocs peuvent maintenant
prendre plusieurs arguments ; le support objet est augmenté des
traits (vérifiés à la compilation) et des mixins à la Ruby
(vérifiés à l'exécution) ; l'opérateur smart match ~~
;
les méta-opérateurs ; les junctions ; les feeds, comparables
aux tubes Unix (pipes), mais au sein du langage (et bidirectionnel).
Juste après le déjeuner (très tôt, à seulement 11h15 !), Jonathan complète la présentation assez générale de Larry par une présentation plus en détails de Perl 6.
Il rappelle que Perl 6 est défini par une spécification sous forme de documents formels et d'une très imposante suite de tests. Il en existe plusieurs implémentations, dont on sait qu'elles sont valides si elles passent les tests.
Rakudo est l'une d'elles, écrite en NQP (Not Quite Perl), Perl 6 et PIL (Parrot Intermediate Language). Son nom vient du japonais rakuda-do, « la voie du chameau », abrégé en i<rakudo>, qui signifie aussi « paradis ». Elle passe actuellement plus de 10 000 tests de spécifications, soit environ 65% de la spécification actuelle.
Jonathan enchaîne ensuite sur les détails de la syntaxe du langage.
Variables. Le sigil fait maintenant partie du nom de la variable, et définit un genre de contrat d'interface.
Boucles. Les boucles de parcours s'appuient sur les arguments de bloc et s'écrivent maintenant :
for %ages.kv -> $name, $age { ... }
Les boucles de style C s'écrivent quant à elles ainsi :
loop ($i = 0; $i < 10; $i++) { ... } loop { ... } # boucle infinie
Chaînage de conditions. On peut fusionner plusieurs conditions en une seule :
if 1 <= $roll1 == $roll2 <= 6 { ... }
Paramètres. Les tableaux et hashes sont maintenant correctement passés aux fonctions, les paramètres peuvent être nommés et accepter des valeurs par défaut.
sub substr ($str, $from = 0, $len = Inf) { ... } # $from vaut par défaut 0, et $len l'infini sub formalize ($text!, :$case, :$justify) { ... } # $text est un paramètre positionnel obligatoire # $case et $justify sont des paramètres nommés optionnels
Objets. À peu près tout en Perl 6 peut être manipulé comme un
objet (autoboxing). Les méthodes se définissent maintenant avec le
mot-clé method
, qui est comme le traditionnel sub
mais permet
en plus d'accéder à l'objet courant par le mot-clé self
.
Types. La méthode .WHAT
peut être invoqué sur n'importe quoi, et
indique quel est le type du bidule.
42.WHAT == Int "beer".WHAT == Str
Les variables peuvent être typées, pour qu'elles ne stockent qu'un type de données. La vérification est effectuée à la compilation si possible, sinon à l'exécution. On peut créer des sous-types à partir des types existants :
subset PositiveInt of Int where { $_ > 0 }
I/O. open()
renvoie l'objet, et on lit les données avec l'opérateur
d'itération (=
en préfixe).
my $fh = open($filepath, ":r"); for =$fh -> $line { say line } # auto-chomp() $fh.close;
Les descripteurs de fichiers globaux STDIN
, STDOUT
, STDERR
s'appellent maintenant $*IN
, $*OUT
, $*ERR
.
Jonctions. Une jonction est une superposition de plusieurs valeurs stockée dans un scalaire, permettant une parallélisation du code.
opérateur de liste opérateur infixe ------------------ ---------------- any($a, $b, $c) $a | $b | $c all($a, $b, $c) $a & $b & $c one($a, $b, $c) $a ^ $b ^ $c none($a, $b, $c) if $x == 1|2|3 { ... } # vrai si $x vaut 1, 2 ou 3 1|2 + 4 == 5|6
Quand on passe une jonction à une fonction qui sait gérer que des scalaires normaux, cette fonction est appelée autant de fois qu'il y a de valeurs dans la jonction, et les résultats sont recombinés en une jonction.
Méta-opérateurs. Le méta-opérateur de réduction [..]
prend un
opérateur et un tableau, et agit comme si l'opérateur était entre
tous les éléments.
$sum = [+] @values; # somme des valeurs $fact = [*] = 1..10; # factorielle de 10
Les hyper-opérateurs »..«
permettent d'exécuter l'opérateur sur
chaque élément des listes en argument. Les listes doivent avoir la
même taille, sauf si on dirige une des pointes vers l'extérieur.
(1, 2, 3) »+« (2, 4, 6); # (3, 6, 9) (1, 2) »+« (10, 20) »*« (2, 3) # (21, 62) -« (1, 2, 3); # (-1, -2, -3) @array »+=» 42; # ajoute 42 à chaque élément $left «*» $right; # ça marche aussi
Le méta-opérateur croix X
réalise un produit cartésien des éléments
en arguments. Il produit toutes les permutations possibles et applique
l'opérateur entre les paires d'éléments obtenues.
<a b> X~ <1 2>; # <a1 a2 b1 b2> 1, 2 X* 3, 4; # 3,4,6,8
Et bien sûr, les méta-opérateurs peuvent être combinés...
La présentation de Jonathan continue mais je ne peux rester jusqu'au bout, voulant écouter Tobias Oetiker.
Tobias explique le concept derrière RRDTool : une mini base de
données, facile à utiliser, avec une faible empreinte mémoire, dont
les données ne font qu'approximer la réalité. Il détaille ensuite
le format des archives, et donne des indications sur comment optimiser
les accès disques. En particulier, il pointe vers un article de LISA'07
dans lequel Dave Plonka avait découvert que Linux 2.6 était par défaut
bien plus lent pour RRDTool que le 2.4, notamment à cause d'optimisation
du gestionnaire de mémoire virtuelle. Des patches pour utiliser les
options RANDOM
et DONTNEED
de fadvise()
et madvise()
ont
été intégrés à la version 1.3 pour restaurer les performances.
Tobias rappelle que RRDTool inclut de nombreuses fonctionnalités graphiques en s'appuyant sur Cairo et Pango, et peut donc sortir du PDF, du SVG ou de l'EPS.
Il donne ensuite des détails sur les nouveautés de la future version 1.4,
dont l'intégration de libdbi
pour récupérer les données depuis une
base SQL, la prédiction de graphe, et le daemon rrdupdated
. Celui-ci
permet de réaliser la mise à jour des archives sur une machine différente
de celle qui exécute rrdupdate
, et de grouper les mises à jour sur
une même archive afin d'optimiser les accès disque. D'après les premiers
tests, les performances s'en trouveraient grandement améliorées.
RRDTool 1.5 devrait quant à elle proposer un format d'archive portable,
étendre le daemon rrdupdated
pour qu'on puisse l'interroger et y
ajouter un support d'authentification.
Avant sa présentation proprement dite, Jon explique aux personnes présentes tout le mal qu'il pense des droits d'auteur et surtout des brevets sur les logiciels, « une manière stupide de gagner de l'argent. »
Il commence avec une histoire de la téléphonie, en expliquant pourquoi les opérateurs étaient nécessaires : il était tout simplement impossible de connecter deux à deux tous les téléphones. Les gens ont ensuite commencé à appeler de plus en plus longtemps. Il raconte qu'un de ses amis avait conservé la ligne pendant 3 ans (pour son modem). Aux USA, le marché fut découpé avec d'un côté AT&T pour les appels longue distance et une myriade de petits opérateurs pour les appels locaux et la pose du cuivre. On ne pouvait donc pas choisir grand chose.
« Then one day.. SIP happens! » et la VoIP se répand sur l'internet.
Jon distingue la VoIP directe (entre deux téléphones) et VoIP indirecte (entre un téléphone et un PBX). Toutefois, de nombreux téléphones matériels (iPhone) ou logiciels (Skype) apparus récemment sont fermés. Cela pose problème car le fournisseur peut fermer son service ou faire faillite.
L'avantage d'un téléphone ouvert est qu'il est facile de porter le système d'exploitation d'un modèle à l'autre, ou de migrer les données utilisateurs. On peut même appliquer des correctifs au système des anciens modèles, ralentissant son obsolescence et autorisant son recyclage par des personnes qui n'ont pas besoin du nouveau modèle.
Les premiers PBX étaient manuels (les standardistes connectant les fiches), puis des machines très chères remplissant des salles entières. Étape majeure, Asterisk, un PBX logiciel et entièrement libre. Il devient possible d'économiser de l'argent, mais aussi de créer des applications nouvelles. Par exemple afficher sur l'écran du PC toutes les informations sur un client quand celui-ci appelle. Il en avait parlé une fois à Mexico, puis revint un mois plus tard pour en parler à nouveau. Un homme se lève et lui dit « Señor Hall, I have done it ».
Par ailleurs, maintenant que tout (audio, vidéo, métadonnées) sont numériques et distribuées par IP, on peut envisager de mélanger les données, ce d'autant plus que les téléphones mobiles deviennent de vrais ordinateurs.
Mais pour qu'un téléphone soit ouvert, tous ses composants doivent l'être : l'API d'accès au matériel, les schémas et la disposition des composants sur la carte mère, les dessins du boîtier, etc. Ce qu'a fait OpenMoko pour son Neo Freerunner.
Jon fait une digression sur Android de Google, signalant que malgré les apparences, ce n'est pas un système ouvert : l'OS du seul téléphone Android disponible à ce jour est verrouillé, et les logiciels doivent être signés.
OpenMoko a annoncé que le modèle actuel du Freerunner, le GTA02, est terminé (en terme de fonctionnalités), et va être maintenant le seul produit pour le moment. La société va travailler sur un autre projet pour gagner un peu d'argent, puis commencera à recueillir les suggestions pour le futur modèle GTA03.
Des nombreuses questions-réponses qui furent échangées, on peut retenir ces quelques-unes. D'abord, que le dernier maillon qui manque dans la chaîne pour avoir une téléphonie totalement libre est une station GSM libre. Aux doutes sur l'extension au grand public de la téléphonie libre, Jon fait remarquer qu'aux débuts, les PC n'étaient qu'au travail avant d'arriver à la maison.
On s'interroge sur l'intérêt des opérateurs téléphoniques (parmi les compagnies les plus fermées qui existent) pour les logiciels libres. Jon pensent qu'elles n'auront pas le choix à l'avenir parce qu'on a de moins en moins besoin d'elles. Pour lui, la dernière chose qu'elles fournissent vraiment est une tour, mais il admet ne connaître aucune compagnies qui a véritablement bougé à ce sujet. Il n'a pas encore regardé le Symbian ouvert par Nokia, mais craint qu'il ne soit qu'à moitié ouvert, comme Android.
Ingy commence par replacer YAML dans les formats de données : XML est un langage à balises, JSON un format d'échange de données, YAML un langage de sérialisation de données. Il existe encore d'autres formats comme SOAP ou ASN.1, mais YAML a l'avantage d'être facile à lire pour un humain.
Et comme pour se contredire, il s'amuse à montrer du YAML assombri
et essaye de nous faire deviner ce qu'il signifie ;-)
YAML, c'est déjà un vocabulaire commun entre les différents langages. On parle de collections de données, sous la forme de séquences (tableaux) ou de mappings (hashes), qui peuvent bien sûr s'imbriquer. La syntaxe classique de YAML s'appuie sur des blocs dont l'indentation détermine le niveau, mais a depuis introduit une syntaxe identique à JSON, les flux.
# style bloc: - name: Mark McGwire hr: 65 avg: 0.278 - name: Sammy Sosa hr: 63 avg: 0.288 # style flux: Mark McGwire: {hr: 65, avg: 0.278} Sammy Sosa: { hr: 63, avg: 0.288 }
Les collections peuvent même être utilisées comme clés de mappings :
{John: Rockway}: Catalyst
En plus des types et des tags, YAML supporte aussi les ancres et alias, ce qui permet de référencer une partie d'une structure à un autre endroit, ce qui permet la sérialisation de graphes.
Ingy explique que malgré la spécification YAML, la communauté Perl
attendait finalement que ce soit lui qui l'implémente. Comme les choses
ont stagné, TPF lui a octroyé une bourse de $3000 pour qu'il porte
PyYAML en Perl, ce qu'il a d'abord fait en Perl 6, et termine de
faire en Perl 5. Le nouveau module YAML.pm
devient une interface
utilisant le meilleur moteur YAML disponible sur le système.
Il termine en indiquant que YAML n'a pas de contrat d'interface, la structure étant un accord entre l'émetteur et le destinataire, et signale que la spécification 1.2 de YAML sera prête le 1er mai, pour OSCON 2009.
Jonathan explique comment Perl, après avoir aidé le web à ses débuts en 1994, s'est ensuite fait dépassé par d'autres langages plus faciles (PHP) ou avec plus de moyens marketing (Java). Mais aujourd'hui, avec le web 2.0 et les interfaces riches (Ajax & co), ces autres langages révèlent leurs limites, et Perl a su se renouveler et s'enrichir sans se dénaturer.
Il énumère les points forts de Perl : une communauté (CPAN, IRC, mails, conférences), de nouveaux modules tous les jours, de nouvelles idées toutes les semaines, des conférences tous les mois, et de temps en temps de nouveaux paradigmes comme Møøse.
Il explique justement le choix de Møøse dans Catalyst, qui facilite
la séparation des tâches complexes en unités plus simples, et permet
de les rendre indépendantes du cadre HTML / HTTP. Møøse a de plus de
nombreuses extensions comme MooseX::Declare
qui fournit une syntaxe
moderne.
Le JavaScript, maintenant omniprésent, est facile à installer avec
js-cpan
. Le CPAN regorge d'outils perfectionnés comme Devel::NYTProf
,
et plus généralement le Perl Moderne fournit, avec des modules comme
Catalyst, Continuity ou HTTP::Engine
, permet de rendre toujours
plus aisée la réalisation de tâches complexes.
« I promise I will deliver the state of Ohio to George W. Bush » avait promis le CEO de Diebold en 2003, et c'est bien ce qui est arrivé...
Très soucieux de l'arrivée des machines à voter et des sérieux doutes qui les entoure, Mitch raconte comment il a découvert un nouveau problème dans les machines Diebold (depuis rebaptisé Premier). En scannant l'ensemble des bulletins papiers, il s'est rendu compte qu'il avait 216 bulletins de plus que dans le comptage officiel, calculé par une machine Diebold. Ce bug est généré quand on appuie sur un bouton de l'interface qui a pour effet d'effacer le journal et le comptage en cours...
Les images des bulletins ont été cryptographiquement signées, gravées sur DVD et rendues disponibles sur l'internet. Mitch n'a utilisé que des logiciels libres pour que tout soit facilement reproductible : Ubuntu, Scanimage (SANE), Seahorse (GPG) et des outils graphiques d'archivage. Il a de plus écrit le logiciel Ballot Browser, avec Python et Tk, pour automatiser la vérification des bulletins.
Son logiciel charge chaque image, repère des motifs sur les coins pour vérifier l'orientation du bulletin et le numéro du district, sélectionne le patron de bulletin correspondant, repère les marques correspondant aux choix du votant et affiche le résultat de son analyse à l'écran en permettant à l'utilisateur de vérifier visuellement ce résultat et si nécessaire de l'invalider par appui sur un bouton. Les résultats sont fournis sous forme d'un fichier CSV, facile à importer dans un tableur ou une base de données.
Mitch effectue une démonstration sur l'ordinateur d'un organisateur grâce à un live DVD : il lance l'analyse sur quelques bulletins et l'interrompt pour montrer en détails l'utilisation de l'interface.
On lui avait objecté de nombreux faux problèmes quand il a démarré ce projet : « ça ne peut être fait pour moins de $x millions de dollars », « il faut des millions de lignes de code », « c'est trop difficile à utiliser ». Sa réponse : JFDI, partager, espérer que d'autres vont contribuer, prier pour des fonds. Les vrais problèmes touchent à la sécurité (comment valider l'utilisation de GPG ? être sûr que l'implémentation est correcte ?), au coût du matériel (le scanner utilisé est un modèle très cher, permettant de scanner les documents à la chaîne) et à la bureaucratie (si ça ne coûte rien, où est le gain ?).
Interrogé sur son opinion à propos du vote électronique, Mitch répond que c'est selon lui inutile, l'utilisation du bulletin papier étant bien plus facile et plus fiable.
Manque de chance pour Yuval, une manifestation se déroule sur la place des partis sur laquelle donne le bâtiment du Parti Travailliste, et bien qu'on soit au 12e étage, on entend parfaitement les bruits de la foule.
Malgré cela, Yuval explique ce qu'est KiøkuDB (à noter qu'étant un fervent utilisateur de Møøse, tous les "o" de ses slides s'écrivent "ø"). Par opposition aux ORM qui n'implémentent qu'un sous-ensemble des objets et une forme assez pauvre d'algèbre relationnelle, KiøkuDB permet de stocker des objets de manière native et non-relationnelle, fonctionnant sur le principe d'une base de données orientée document, sans schéma. Plusieurs backends de stockage sont disponibles : BerkeleyDB, DBI, CouchDB, Amazon SimpleDB, fichiers plats.
Le stockage d'objets Perl présents en mémoire sur un support permanent n'est pas une tâche facile. Huit ans plus tôt, Pixie était déjà une tentative d'atteindre ce Saint Graal. KiøkuDB est un nouvel essai mais la différence est qu'il peut se passer des heuristiques hasardeuses grâce aux possibilités d'introspection offertes par Møøse et MOP. On peut ainsi enregistrer et charger des graphes d'objets sans problème.
Yuval montre un exemple avec des objets représentant un blog et ses entrées, et indique que pour les backends qui le supportent, les opérations sont transactionnelles.
Pour les objets non-Møøse, KiojuDB::TypeMap
propose déjà plusieurs
modèles : Naive
pour les objets classique à base de hash,
StorableHook
pour les classes supportant ces fonctions. Les objets
avec une méta-classe peuvent définir des traits additionnels pour
indiquer des attributs à ne pas sérialiser ou à charger à la demande.
Yuval reconnaît que Møøse n'offre par contre pas une grande vitesse
d'exécution, mais autorise tout de même dans les 400 reconstructions
d'objet à la seconde sur son portable. Il espère néanmoins que
Moose::XS
permettra d'améliorer les performances.
Brian Ingerson demande comment KiøkuDB est lié à Perl ; Yuval répond qu'étant basé sur Møøse, l'implémentation est spécifique à Perl, mais le concept peut très bien être porté dans d'autres langages.
Padre signifie Perl Application Development and Refactoring Environment,
mais comme le dit Gabor, c'est juste un éditeur de texte avec un ego
surdimensionné :-)
.
Pourquoi créer un nouvel éditeur alors qu'il en existe déjà une pléthore ? La plupart (vi, emacs, etc) sont conçus par et pour des geeks. Padre se veut pour les gens normaux.
Par ailleurs, Perl lui-même n'aide pas souvent le débutant avec des
messages d'erreurs pas toujours très clairs (et diagnostics.pm
est
plutôt trop verbeux et n'aide pas vraiment non plus). Le but de Padre
est d'aider le programmeur à comprendre l'erreur, et même à en éviter
en repérant les plus courantes, par exemple use warning;
(manque le
"s") ou l'utilisation d'une fonction comme say()
sans un use 5.010
.
Gabor fait un démonstration et présente les différentes fonctionnalités :
facilité de création d'un programme ou module Perl 5, et même de
distribution CPAN (avec Module::Starter
)
diff entre le fichier sur disque et sa version en mémoire
intégration de Ack (le grep du programmeur)
interface traduite en une dizaine de langues
exécution du code avec surlignage des erreurs et avertissements ; un clic sur le message et les diagnostics détaillés s'affichent, avec la traduction si elle est disponible
Bien sûr, on peut étendre Padre avec des plugins, et plusieurs sont
déjà disponibles sur le CPAN : Nopaste, PAR, Perl::Critic
...
MyPlugin
est un plugin local facile à éditer et à recharger pour
changer le comportement de l'éditeur en temps réel.
Padre peut utiliser PPI pour l'analyse du code Perl, mais c'est désactivé par défaut, PPI étant un peu lent. Cela permet d'avoir des fonctionnalités spécifiques à Perl comme trouver une accolade non appariée, renommer lexicalement une variable, trouver la déclaration d'une variable, voir la structure globale (les fonctions) d'un fichier.
Padre permet aussi d'écrire du Perl 6, en fournissant une aide contextuelle tirée des Synopsis. Le code peut être exécuté si Rakudo est installé. Gabor note qu'une fois que Patrick Michaud aura corrigé un bug dans PCT, il sera très facile de récupérer l'arbre d'analyse de n'importe quel langage implémenté avec Parrot, et ainsi fournir pour chaque nouveau langage un support automatique de coloration syntaxique.
Gabor termine en précisant que Padre est bien sûr disponible sur le CPAN, mais aussi sous forme de paquet pour les principales distributions.
Anatoly Sharifulin, jeune codeur, a écrit les modules
Acme::CPANAuthors::Russian
(113 auteurs) et Acme::CPANAuthors::Norwegian
(21 auteurs), avec un site web qui offre les flux RSS et icones Gravatar
associés. Dans 9000 km of Perl, Andrew Shitov montre que l'ancien bloc
soviétique n'est plus inactif depuis 2008 avec des conférences en Russie
(à Moscou et Vladivostok), Ukraine, Bulgarie, Ouzbékistan. Gabor Szabo
rappelle comment avoir des rapports de tests plus complets, en utilisant
TAP::Formatter::HTML
, et que tout s'automatise avec Smolder. Matt S.
Trout lance de sa manière si fleurie la campagne Perl Iron Man.
Comme cela avait été annoncé le matin, une bonne partie des participants de la conférence se retrouvent le soir au 12e étage du bâtiment pour profiter de la bière offerte par des sponsors, discuter, voire même coder.
De nombreuses personnes sont restées après la conférence pour participer au hackathon de deux jours consacré à Perl 6, ou aux formations à Perl 6 et aux tests automatisés réalisées par Gabor Szabo.
Cette édition du Nordic Perl Workshop a été une bonne surprise de par son intégration au sein de Go Open, ce qui a permis d'écouter des conférenciers hors du monde Perl (et souvent de grands noms) à moindre frais. Le succès a d'ailleurs été au rendez-vous puisque plus de 110 personnes ont participé au NPW (sans compter celles venant de Go Open). On ne sait pas encore quelle sera la ville qui organisera la prochaine édition, même si dans les discussions par mails qui ont suivi plusieurs noms ont été cités, entre autres Helsinki (Finlande), Reykjavik (Islande), Århus (Danemark), Göteborg ou Malmö (Suède), voire même Riga (Lettonie). Même si rien n'est décidé, le but affiché est de sortir des trois villes habituelles que sont Oslo, Copenhague et Stockholm. Dans tous les cas, ce sera l'occasion de découvrir de nouveaux endroits.
Nordic Perl Workshop 2009 - http://www.perlworkshop.no/npw2009/
Go Open 2009 - http://goopen2009.friprog.no/
Periodic table of the Perl 6 operators - http://www.ozonehouse.com/mark/periodic/
Rakudo, l'implémentation de Perl 6 sur Parrot - http://rakudo.org/
YAML, spécification et implémentations - http://yaml.org/
TEV Systems & Ballot Browser - http://www.tevsystems.com/
Padre - http://padre.perlide.org
Copyright © Les Mongueurs de Perl, 2001-2011
pour le site.
Les auteurs conservent le copyright de leurs articles.