La visite de Jouke
Un historique de toutes nos réunions
Table des matières
La voix du secrétaire (Jean)
Lorsque je suis arrivé dans le sous-sol de la Taverne République, j'ai
trouvé une personne, bien en chair, aux joues rebondies, aux cheveux
couvrant la nuque et à la voix claire. C'était un revenant
(*). En effet, après plus d'un an d'absence et
après le gain d'une quarantaine de kilogrammes, Samuel
(Moun's) assiste de nouveau à une réunion des Perl Mongueurs.
Présents à la réunion, par ordre d'entrée en scène :
- Samuel, qui a mangé une salade niçoise et bu une Adellscott,
- moi, qui ai mangé un magret de canard au miel, et bu une Margarita,
- Briac, qui a mangé une andouillette, et bu de la bière,
- Jouke, qui a mangé une soupe gratinée et une entrecôte, et bu de l'Adellscott,
- D@vid, qui a pris un œuf mayonnaise, une escalope milanaise, et de la bière,
- et BooK, qui avait déjà mangé, et qui s'est contenté de boire de la bière.
Comme d'habitude, nous nous sommes installés au sous-sol. Mais, comme nous avons
pu le constater, le vendredi soir est plus animé que le mercredi soir. Nous n'étions
donc pas les seuls au sous-sol, et il y avait même un repas d'anniversaire de prévu.
Nous avons donc eu droit à la musique, à un niveau sonore plus ou moins fort selon
le moment. Philippe a tenté de régler le problème avec un peu de bricolage, mais
en fin de compte, au bout d'un certain temps, nous sommes remontés au rez-de-chaussée,
car le fond de la salle était (un peu) moins bruyant que le sous-sol.
Les sujets abordés cette fois-ci ne couvrent que deux
catégories : Perl, et le
reste. S'il a été question d'Internet ou de programmation, c'était
à chaque fois en relation directe avec Perl. Il y a eu une revue de code, mais
pas vraiment pédagogique, et nous avons parlé encore une fois du Seigneur
des Anneaux.
- Jouke est en train d'écrire un livre sur les interfaces graphiques :
Tk,
Gtk,
Wx
et Win32.
Nous tentons de lui faire admettre qu'il faut y rajouter
curses
(ou ncurses), mais il considère que cette interface
n'est pas graphique. Pourtant, fais-je remarquer, curses a été
écrit pour
Rogue,
un jeu qui, dans une certaine mesure, peut être
considéré comme l'ancêtre de Doom, Quake et autres.
- Philippe demande si ce n'est pas plutôt pour
vi,
que curses a été écrit. Il semble en fait qu'il ait
confondu avec termcap ou peut-être terminfo.
- Pour en revenir au livre de Jouke, il sera édité chez
Manning.
Ce qui gêne Jouke, c'est que l'éditeur demande qu'il utilise Word pour
écrire le livre. Apparamment, il y a quelques années, quelqu'un de chez
Manning a écrit des macros Word, qui fonctionnent sans problème, mais plus
personne n'est capable de les adapter. C'est pour cela qu'ils préfèrent
ne rien changer à leurs outils.
- Jouke
participera également à
TPC
et YAPC,
avec un tutoriel sur les
interfaces graphiques. Cela lui permettra de payer son entrée à la conférence,
et peut-être le transport.
- BooK nous présente le brouillon de l'obfuscation dédiée à
Dave Cross
(celle que Dave a achetée aux enchères à Amsterdam). Il y met en
pratique les références sur substr qu'il a découvertes il
y a peu de temps. Il a remarqué que dans la version 5.005, le
programme suivant :
#!/usr/bin/perl -w
my $ch = qq(Hello world\n);
my $rf = \substr($ch, 2, 2);
print ref($rf), qq(\n);
imprimait la mention LVALUE,
qui n'était pas documentée à cette époque.
- À propos de cette fonctionnalité, Philippe a remarqué un comportement bizarre,
et se demande s'il s'agit d'un bug. Pour en être un peu plus sûr, il voudrait
accéder à la toute dernière version des sources de Perl, bleadperl.
Il demande s'il existe un répertoire CVS pour cela, mais personne n'est en
mesure de lui répondre. [ Des recherches ultérieures lui indiqueront que
les sources de bleadperl ne sont pas sous CVS. ]
- Comme Philippe
veut décortiquer les sources de la fonction substr,
Briac
lui signale qu'il aurait avantage à s'abonner à la
liste P5P.
En effet, au détour des messages, on apprend beaucoup de choses sur les
entrailles de Perl.
- Le premier événement de la journée, c'est la visite de Jouke. Mais il y
a eu un autre événement, c'est la sortie de la
quatrième apocalypse de Perl 6.
Les uns l'ont lue, les autres l'ont survolée. Dans l'ensemble, nous l'avons
trouvée intéressante, avec les switch / case, qui se codent
given / when, pour que l'on ne soit pas surpris que cela ne fonctionne
pas exactement comme les switch / case du langage C (ou d'autres
langages de programmation, d'ailleurs).
- En revanche, Briac revient sur la
première apocalypse.
Il y a un point (c'est le cas de le dire) qui l'a déçu : le remplacement
de « -> » par « . ». Il trouve que
cela fait trop penser à Python.
- Briac nous expose une méthode originale de débuggage, pour
obtenir la trace des modifications, voire des utilisations d'une
variable. Il suffit de lier cette variable, et de programmer la
trace dans les méthodes de la classe liée. Exemple :
package dbgx;
sub TIESCALAR {
my ($class, $x) = @_;
return bless \$x, $class
}
sub STORE {
my ($self, $val) = @_;
my $source = join ' ', caller();
print STDERR "\$x passe à $val ($source)\n";
$$self = $val;
return $val;
}
sub FETCH {
my ($self) = @_;
return $$self;
}
package main;
my $x;
tie $x, 'dbgx';
$x = 23;
$x = reverse ++$x;
print $x, qq(\n);
affiche les valeurs successives de $x. En fait, Briac
allait un cran plus loin. Il montrait comment tracer une variable
spéciale. Il suffit d'adapter le programme ci-dessus, ce qui donne
cette variante :
use strict;
package dbg_underscore;
sub TIESCALAR {
my ($class, $x) = @_;
return bless \$x, $class
}
sub STORE {
my ($self, $val) = @_;
my $source = join ' ', caller();
print STDERR "\$_ passe à $val ($source)\n";
$$self = $val;
return $val;
}
sub FETCH {
my ($self) = @_;
return $$self;
}
package main;
use vars qw($underscore); # Ne pas utiliser une variable "my" !
*underscore = *_;
tie $underscore, 'dbg_underscore';
$_ = 42;
s/(.)(.)/$2$1/;
print --$_, qq(\n);
et de la sorte, vous tracez les utilisations de $_.
- Briac va bientôt diffuser un deuxième module. Ce module s'inspire
de l'outil de recherche
Sherlock,
disponible sur Macintosh. Avec cet
outil, et des plug-ins appropriés, on peut effectuer des
recherches sur le web, en décrivant la structure des fichiers HTML, et
où rechercher les informations demandées par rapport à cette structure.
- BooK n'a pas oublié le module de
calendrier
pataphysique
qu'il a en projet. Il nous rappelle le principe de ce calendrier,
où par le biais de jours virtuels, on s'arrange pour que chaque
mois comporte un vendredi 13. Briac et lui ont jeté un coup
d'œil sur
mon module de calendrier républicain.
Philippe a constaté qu'il y avait beaucoup de calculs. Je lui
réponds que dans les modules de cette série, les calculs ne sont
pas si compliqués, et que leur unique but est de faire la
conversion entre le Julian Day Number et le calendrier
cible. Le JDN est un calendrier très simple, qui n'a aucune notion
d'année, de mois ou de semaine. Chaque date est caractérisée
uniquement par le nombre de jours qui la séparent d'une date
origine, fixée arbitrairement en 4712 av J.C. Dans mon module, je
me suis permis d'ajouter les « fêtes » (p.ex. le 29
Nivôse CCX est le « jour du mercure ») d'une part parce
que j'avais la liste sur un livre, d'autre part parce que ce
n'était pas trop difficile à programmer. Mais il n'y a aucune
obligation de pousser jusque là.
- Briac avait l'intention de programmer un module de date, lui aussi, mais
en s'appuyant sur l'œuvre de Tolkien. Pas le
calendrier de la Comté,
bien sûr, ce module existe déjà.
- Dans la
documentation
de son module,
Rich Bowen
avait écrit que pour des
modules
comme
le sien, il ne voyait pas vraiment
à quoi ils pouvaient être utiles.
La seule utilité que l'on voit généralement
de les invoquer dans le .profile. Briac a trouvé une autre
utilisation, il génère des en-têtes spécialisés dans les messages
qu'il envoie. Par exemple, à la date de la réunion, on aurait pu
trouver :
X-ShireDate: Today is Highday 4 Rethe 7466
Remarque : les grands esprits se rencontrent. En effet, j'ai fouillé
les archives de la liste Date-Time, et j'ai trouvé un certain
David Cantrell, dont les messages comportent des en-têtes dans le genre :
X-Ddate: Today is Sweetmorn, Chaos 56 YOLD 3168
- Samuel
nous fait remarquer que le calendrier hébreu, basé sur un cycle
de 19 ans, est plus précis que le calendrier grégorien. Le calendrier
hébreu est valable pour 500 000 ans, le calendrier
grégorien seulement pour 100 000 ans. Je réponds que
le mouvement des planètes autour du soleil est un mouvement à dix corps
(voire plus), donc un mouvement chaotique.
Dans le temps, on cherchait la solution analytique du problème à n corps,
avec n >= 3, mais de nos jours, on sait que cela
relève des lois du chaos. [ Cela dit, ce phénomène chaotique a, comme
disent les spécialistes, un horizon d'un million d'années. La précision du
calendrier hébraïque est donc valide, mais il est illusoire d'espérer
faire mieux. ]
- Samuel nous raconte qu'il a déjà eu l'occasion d'analyser des expressions
régulières à l'aide... d'expressions régulières. Il avait l'air de penser
que cette démarche était anti-conformiste, crade, obscure, que sais-je encore.
Je ne trouve pas. Depuis la nuit des temps (au moins depuis qu'il existe des
langages assembleurs), il y a des programmes dont le but est de générer des
programmes. Donc, pourquoi serait-il interdit d'utiliser des expressions
régulières pour décortiquer des expressions régulières ?
- Tiens, puisqu'on en parle, il paraît que
Jeff Pinyan
(Japhy)
est en train d'écrire un
livre sur les expressions régulières.
Ce livre visera moins haut que celui de
Jeffrey Friedl,
ce qui ne l'empêchera pas d'être intéressant.
- BooK est enfin allé voir le Seigneur des Anneaux. N'ayant pas lu
le livre (ou si peu), il ne se prononce pas quant à la fidélité du film
par rapport au roman. Il trouve que par moments le film force la dose
d'effets spéciaux. C'est le cas du combat contre le troll des cavernes.
Philippe a même remarqué à ce moment-là que le corps de Legolas était composé
de polygones.
- Il a également lu un article à propos du film. Cet article présentait
les personnages à l'intention de lecteurs ne connaissant pas l'œuvre de
Tolkien, mais celle de George Lucas. Ainsi, il était expliqué que Gandalf,
c'est Obi-Wan Kenobi, que Sauron, c'est l'Empereur Palpatine, et ainsi
de suite. Totalement inintéressant. À l'inverse, je raconte qu'un collègue
m'avait prêté un livre qui établissait des parallèles entre la Guerre des
Étoiles et notre monde. Le livre montrait comment George Lucas s'était
inspiré des principales religions de notre monde, ainsi que de certains
mythes (Chevaliers de la Table Ronde, Nibelungen, sagas, etc). Je n'ai
pas été convaincu par tout ce que le livre expose, mais il y
a quand même des rapprochements intéressants. Beaucoup plus que
ceux dont Philippe nous faisait part.
- Que se passe-t-il le 20 février prochain ? C'est la journée
du palindrome, nous dit Philippe. En effet, cette journée s'exprime
par le nombre 20022002, au moins en Europe. En raison de la numérotation
des mois, les jours palindromiques ont tendance à se grouper en début de millénaire.
C'est ainsi qu'il y a eu le 10 février de l'année dernière, et que nous en aurons
trois en 2010, 2011 et 2012, un autre série en 2030, 2031 et 2032, et ainsi de suite.
Une coïncidence extraordinaire (?) fait que 2092 est une année bissextile,
ce qui fait qu'il y aura bien un 29 février 2092. Après le 29 décembre 2192,
il faudra en revanche attendre huit siècles et des poussières jusqu'en
mars 3001.
[ Erratum du 2 février 2020 : dans ce paragraphe, nous avons indûment sauté
la série de 2020, 2021 et 2022. Et nous avons également omis de faire remarquer
que le 2 février 2020 et le 12 décembre 2121 sont des palindromes aussi bien avec
le format JJMMAAAA qu'avec le format AAAAMMJJ et le format MMJJAAAA. ]
- BooK enchaîne sur une leçon de vocabulaire. En fait, un palindrome
est un mot ou une phrase qui reste intelligible lorsqu'on lit à
rebrousse-poil, mais sans être nécessairement invariable. Ainsi,
« sac », « et » et « un » sont des
palindromes. Un mot ou une phrase invariable par retournement
s'appelle un « anacycle » (« radar » par exemple).
- Sur les cinq mongueurs français présents à la réunion, il y en a
quatre qui n'ont pas la télévision (je crois bien que le cinquième
était aux toilettes quand nous avons abordé le sujet). Cela ne nous empêche
pas de savoir ce qui s'y passe. À force de côtoyer des collègues de
travail dont les goûts diffèrent des nôtres et de passer devant les
affichettes des maisons de la presse, nous avons tous entendu (un peu)
parler du loft, des Popstars et de la Star Academy. D@vid prend des
cours d'escrime dans une salle d'armes fréquentée, croyait-il, par des
gens cultivés. Éh bien même là, il a entendu parler du loft.
- Moun's nous raconte que sa grand-mère, âgée de quatre-vingts ans,
a commencé à écrire un livre il y a cinquante ans. Elle en est
au tome 19 ou 20. Il ne nous a pas dit si elle avait écrit les 10
ou 15 premiers à la plume ou à la machine à écrire, mais depuis quelques
années, elle utilisait Word. Un jour, Samuel s'est aperçu qu'elle
utilisait des macros Word de son cru. Il s'est dit qu'elle était mûre pour
passer à l'étape suivante, et il lui a appris TEX.
Et effectivement, c'est ainsi qu'elle écrit maintenant.
- Dans la
guerre sainte
Emacs
contre vi,
Moun's se range du côté
d'Emacs.
Il trouve que Emacs est beaucoup plus simple que
vi.
Il lui suffit de connaître quelques fonctions :
- C-x C-f pour lire un fichier,
- C-x C-s pour le sauvergarder,
- C-c C-c pour faire un commit sous CVS,
- C-x C-q pour quitter Emacs,
- M-x pour tout le reste.
(remarque : je ne suis pas sûr de l'équivalent clavier du commit CVS).
- Pour aider Jouke à commander son repas en connaissance de cause, le serveur
lui a fourni une carte écrite en français, en anglais et en allemand. J'ai jeté
un coup d'œil sur la version allemande, et j'ai vu que je comprenais sans
peine le nom de certains plats : « Wurst mit pommes de terre frites »,
ou bien « plat du jour », ou encore « crème caramel » (en allemand
dans le texte).
- J'ai indiqué à Jouke que la France est un pays à bière. La
production est essentiellement limitée à quelques régions,
limitrophes des pays célèbres pour leurs bières : l'Alsace et
la Lorraine, limitrophes de l'Allemagne, et la Picardie et les
Flandres, limitrophes de la Belgique. En fait, bien que je fasse
partie des Perl Mongueurs, je n'aime pas la bière. Je suis quand
même un peu renseigné sur les bières françaises, car mon frère aime
la bière, et il collectionne les bouteilles qu'il consomme (cela
dit, il ne pratique pas la programmation en Perl).
- Alors que nous décortiquions l'apocalypse de Larry, Moun's et D@vid étaient
en train de décortiquer la Bible. Je n'ai pas suivi, vous n'aurez donc pas
les détails.
- ... alors que, dans l'imagerie populaire, les revenants sont décharnés, et ont
une chevelure éparse et une voix caverneuse.
- Un livre écrit au fil de nombreuses années et en plusieurs tomes,
cela me rappelle les notes bibliographiques de l'Histoire Universelle des
Chiffres. On y trouve en effet la remarque suivante.
Par le sigle « MDP », nous désignons les publications
consécutives ci-après de la Mission archéologique française en Iran
(lesquelles ont changé plusieurs fois de nom, mais ont conservé le
numéro d'ordre correspondant) :
a) tomes I à V : Mémoires de la Mission archéologique en
Susiane ;
b) tomes VI à XIII : Mémoires de la Délégation en Perse ;
c) tomes XIV à XXX : Mémoires de la Mission archéologique de
Perse ;
d) tomes XXXI et suivants : Mémoires de la Mission
archéologique en Iran.
HTML 5 - CSS v3
Mongueurs de Paris, le 2 février 2020
Copyright © The Paris Perl Mongers, 1999-2024