Gérald, le traducteur d'Amélia, enfin sorti de l'ombre,
Briac, qui a mangé une andouillette et bu de la bière,
Brad, qui a mangé un magret de canard, et bu de la bière,
D@vid, qui a mangé quelque chose, et bu de la bière,
Sniper, qui a mangé quelque chose, et bu de la bière,
François (D), qui a mangé je ne sais plus quoi et bu de la bière,
Fabien, qui s'est restauré et désaltéré,
David, qui a fait de même,
Emmanuel, qui a mangé un oeuf mayonnaise, un plat principal, et bu un Orangina,
Kai, qui a commandé une portion de moules-frites et en a mangé la moitié, et bu de la bière,
Birgit, qui a pris l'autre moitié de la portion de moules-frites, et de la bière,
Philippe, qui a mangé une soupe gratinée et une andouillette et bu de la bière,
Eric, qui a pris un repas,
Stéphane qui a mangé une soupe gratinée, un plat principal et une tarte aux pommes, et bu de la bière,
Olivier, qui a mangé un oeuf mayonnaise, des saucisses et des frites, et bu de la bière,
Nicolas, qui a simplement bu de la bière, compte tenu de son heure d'arrivée,
et moi, qui ai mangé un magret de canard et bu une Margarita.
Je me souviens vaguement avoir vu passer un plat de spaghetti, mais je ne
me souviens plus qui l'a mangé. Quant aux marques des différentes bières...
Il a été question de Perl,
d'informatique, d'Internet,
et de sujets divers,
comme à l'accoutumée. Néanmoins, contrairement aux précédentes
réunions, il n'a pas été question du Seigneur des Anneaux (au moins
pas dans les discussions que j'ai suivies). Il n'y a pas eu de revue
de code, et il n'a quasiment pas été question de XML.
Il a été question des articles que nous pourrions écrire dans la
presse informatique francophone
(Linux Magazine
et
LOGIN, à part cela, il n'y a pas grand chose :-). Philippe
pense les découper en quatre catégories :
Perl théorique,
Perl pratique (les constructions idiomatiques),
les modules du noyau,
les modules de CPAN.
L'un des buts recherché est de montrer aux lecteurs comment écrire
réellement en Perl. En effet, on voit assez souvent des gens qui
écrivent des scripts Perl en conservant leur tournure d'esprit C
(voire VB, horreur !). Ou bien, expliquer pourquoi il est
illusoire de vouloir faire l'analyse syntaxique d'un source HTML avec
des expressions régulières.
Il serait peut-être possible également, de
traduire des articles. Notamment, Philippe a commencé à traduire la
première apocalypse
de
Larry. Pour Stéphane, cela ne vaut pas le coup de traduire les
apocalypses et les exégèses, car les articles de Randal dans
Web Techniques
sont plus à jour et plus intéressants. D'autres
rétorquent que les problèmes de copyright risquent de se présenter
avec Web Techniques, ce qui est peu probable avec
perl.com.
Pour ces articles, il faut un coordinateur, chargé de fouetter les
retardataires. Si j'ai bien compris, D@vid s'est proposé, étant donné
que sa situation professionnelle actuelle lui laisse du temps libre.
Il m'a semblé que quelqu'un d'autre s'était proposé, mais j'ai oublié
qui. Quant au relecteur / correcteur orthographique, il semblerait que
cela sera celui qui vient de finir la relecture d'Amelia.
[ En fait, Sniper et Olivier se sont proposés d'aider BooK à fouetter tout
le monde. Ils communiqueront par l'adresse articles(at)mongueurs(dot)net.
D@vid a effectivement proposé des idées, mais ne se sent pas capable d'écrire
des articles. -- BooK ]
À propos de constructions idiomatiques, quelqu'un, je crois que
c'est Philippe, a apporté
Effective Perl Programming
(le livre avec une perle en couverture). On y trouve notamment deux
façons de fusionner deux hachages. Supposons que l'on veuille
recopier dans %a toutes les entrées de %b, sachant
que si deux éléments ont la même clé, on privilégiera la valeur
provenant de %b. La première façon de faire est :
%a = (%a, %b);
Cette ligne de code repose sur les conversions automatiques hachage
<-> liste. Le livre présente une autre construction, moins
naturelle, mais plus efficace, avec un slice de
hachage :
@a{keys %b} = values %b;
Cette construction repose sur le fait que, même si l'ordre des clés
retournées par keys est imprévisible, il y a au moins une
chose de garantie, c'est que keys et values (et
each) utiliseront exactement le même ordre.
Et comment déterminer le minimum de deux nombres ? Essayez
avec :
[ $a => $b ] -> [ $b <= $a ]
C'est peut-être moins efficace qu'un ? : mais c'est plus
beau, non ?
Perl comporte un certain nombre de particularités qui facilitent
bien la vie. Par exemple, le fait que la fonction substr soit
lvaluable. Pour remplacer quelques caractères au milieu d'une
chaîne, il suffit de faire :
substr($ch, 3, 2) = "yz";
là où d'autres langages imposeraient quelque chose comme :
$ch = substr($ch, 0, 3) . "yz" . substr($ch, 5);
Et il n'y a même pas besoin de se tracasser si la sous-chaîne est
remplacée par une chaîne de longueur différente. C'est bien
pratique. Un autre « gadget », c'est l'incrémentation
magique (alphabétique), et le fait que l'incrémentation de
"z" permet d'obtenir "aa". Ce qui ravit Philippe,
c'est que ces deux particularités fonctionnent ensemble sans
problème. Ainsi, si $ch contient "Bizerte", le code
substr($ch, 2, 1)++;
laissera "Biaaerte" dans la variable $ch, sans faire
d'esclandre ni de core dump. Est-ce que les auteurs (Larry et
les P5P) avaient prévu le cas particulier dès le début ? Ou bien
est-ce les deux fonctionnalités ont cohabité sans qu'il y ait besoin
de prendre des mesures particulières. Après réflexion, nous pensons
que la deuxième réponse est la plus probable. Lorsque Larry a spécifié
Perl, il n'avait certainement pas prévu tout ce que l'on pourrait
faire avec. Et pourtant, quand on regarde les
écrits
ou
le
répertoireCPAN
de
certains...
On peut avoir cependant des déconvenues. C'est arrivé à Nicolas.
Lorsqu'une fonction doit calculer un résultat, ou rechercher une
donnée, il est possible que le calcul ou la recherche échoue. Plutôt
que de tout arrêter avec un die ou un croak, l'idée
qui vient à l'esprit est de quitter la fonction par :
return undef; # MALADROIT
Nicolas sait que ce n'est pas bien. Si la fonction est appelée en
contexte de liste, il est préférable qu'elle retourne une liste
vide. Et il y a un
moyen simple et élégant de le faire :
return; # BIEN
qui est équivalent à :
return wantarray ? () : undef;
Le problème de Nicolas, c'est qu'il utilisait une fonction de ce genre
pour alimenter un hachage. Il a écrit une ligne de code dans le
genre :
premiere_fonction( cle1 => deuxieme_fct($arg1), cle2 => deuxieme_fct ($arg2));
sub premiere_fonction {
my %hachage = @_;
}
Or, la deuxieme_fct échouait avec les arguments
fournis. Comme elle était appelée en contexte de liste, plutôt que de
renvoyer undef, elle renvoyait une liste vide. L'opérateur
virgule concaténait ses opérandes, et envoyait donc à la
premiere_fonction une liste à deux éléments. Et cette
premiere_fonction créait un hachage à une clé (cle1)
et une valeur (cle2).
Les abonnés à
TPJ
viennent de recevoir le dernier
numéro, ainsi que quelques numéros de
Sysadmin.
Comme tout
le monde ne fait pas de l'administration système, nous nous sentons
assez peu concernés pas le contenu de Sysadmin. Enfin, bon,
c'est déjà bien gentil d'avoir repris le passif de
Earthweb. Et puis, il y a des articles intéressants. La
déception est plus grande, et de loin, au sujet du contenu de
TPJ. La table des matières de ce numéro comporte six
entrées, dont l'index des annonceurs. Ça fait pas lourd ! En
plus, les articles ne sont pas ce qu'il y a de plus intéressant.
Combien de personnes sont intéressées par l'article expliquant
comment récupérer les informations de la bourse ? Moi, j'ai
été intéressé par le poème Jabberwocky, et c'est à
peu près tout.
Briac a rapidement présenté à quelques-uns
son module.
Il s'agit
d'utiliser un hachage sans redouter les fautes de frappe sur les clés.
On peut stocker une valeur avec une clé donnée, puis récupérer cette
valeur en donnant une clé qui n'est pas rigoureusement identique
à la première clé, mais qui y ressemble. Par exemple :
use Tie::Hash::Approx;
my %hachage;
tie %hachage, 'Tie::Hash::Approx';
%hachage = ( tititoto => "quelque chose" );
print "$hachage{tititot}\n";
imprimera quelque chose. Plus précisément, il imprimera "quelque chose".
Philippe a un compte sur CPAN, mais il n'a toujours rien soumis.
La raison est : « Quand je pense que tout le monde pourrait
voir mon code, j'aurais un peu honte ! » Philippe, quand tu
vois le code de certains modules et l'intérêt de certains autres,
ce n'est pas la peine d'avoir des complexes.
Et n'importe comment, ta
réputationestdéjàcompromise.
Stéphane s'est entraîné à écrire des
filtres de
source.
Il en a
écrit un, notamment, qui permet d'utiliser, au moins en partie, la
syntaxe de Perl 6, où l'accès à un attribut se fait avec un point au
lieu d'une flèche, et où la concaténation se fait avec un souligné au
lieu d'un point. Il avait l'intention de le diffuser (mais peut-être
pas sur CPAN). Il en a discuté avec Damian au préalable, mais celui-ci
lui envoyé une réponse dans le genre : « Non, ne le diffuse
pas. Il est très bien, mais il ressemble énormément à un module que je
vais moi-même diffuser dans quelque temps. »
Il a été question également de Damian, pour signaler l'existence
du module
Regexp::Common,
qui fournit aux débutants, et aux
programmeurs confirmés, des expressions régulières toutes faites pour
des usages courants.
On commence à parler de
Perl 5.8.0.
Il paraît que parmi les
modules du noyau, il y aura un analyseur XML, à condition que ce
module soit du « pur Perl », c'est-à-dire, ne faisant pas
appel à des programmes C. Donc, XML::Parser, qui utilise
expat est grillé. Briac nous indique qu'il en existe
quelques-uns.
L'un des événements majeurs de la soirée a été l'échange de clés
PGP ou
GPG,
à l'initiative de Fabien. Il a expliqué que la
cryptographie ne sert pas seulement à éviter les indiscrétions. Elle
sert également à authentifier les documents électroniques, car si le
message est accompagné d'une signature PGP, et que l'on vérifie cette
signature avec la clé publique de Tartempion, cela signifie que seul
quelqu'un qui possède la clé privée de Tartempion, et sa phrase "pass" associée a pu envoyer ce
message. Donc, cela ne peut être que Tartempion. Ce raisonnement
possède une faille : en fait, n'importe qui peut générer une clé
PGP, et la déposer sur un serveur de clé en prétendant s'appeler
Tartempion. C'est donc pour combler cette faille qu'ont été instaurées
les séances d'échange de clés. Ainsi, à l'occasion d'une rencontre où
ils sont physiquement en présence l'un de l'autre, deux personnes
peuvent échanger leurs clés publiques. Traditionnellement, il
convient de justifier de son identité, avec un document officiel comme
une carte d'identité.
Il est très important de le faire car toute signature avec sa clef,
engage le détenteur de cette même clef (soi en fait :). Donc signer une
clef sans vérifier l'authenticité de celle ci, c'est à dire que la
personne est bien qui elle dit être, fait en sorte que l'on est, petit à
petit, exclu du réseau de confiance, car si on remarque que X a signé
la clef de Y, et que Y n'est pas vraiment Y, alors tout ceux qui s'en
seront aperçu ne pourront plus faire confiance à X.
D'un point de vue pratique, l'authentification des messages électroniques
par PGP ou GPG ne devrait pas poser de problème, car cette fonction a été
détaillée dans deuxRFC, donc tout logiciel
correct de courrier électronique doit pouvoir envoyer la signature dans un
attachement MIME. À noter le comportement curieux de Outlook :
lorsque l'on reçoit un tel message, Outlook le conserve avec un corps
vide et deux pièces jointes, le véritable texte et la signature.
Fabien nous expose également pourquoi il faut utiliser la
cryptographie. Compte tenu des récents événements, la cryptographie a
été montrée du doigt, et rendue responsable au moins en partie des
attentats terroristes. Donc, il est question d'interdire la
cryptographie. Mais cela ne résoudra pas le problème, car une personne
mal intentionnée n'hésitera pas à utiliser un logiciel de
cryptographie, même si cela contrevient à la loi... Faut pas être
naïf ! En fait, si les instances dirigeantes veulent interdire la
cryptographie, c'est pour pouvoir espionner les citoyens respectueux
des lois, et elles profitent des mouvements d'opinion faisant suite
aux attentats pour mener à bien leurs actions liberticides. Comme il
n'y a aucune raison valable d'interdire la cryptographie, nous autres
citoyens respectueux des lois, nous devons utiliser la cryptographie.
Surtout, il faut que nous autres techniciens l'utilisions, sinon comment demander
à l'utilisateur moyen de le faire alors qu'il voit bien que nous même ne
le faisons pas.
Dans le même ordre d'idée, il paraît que maintenant n'importe quel
vigile privé engagé par n'importe quel magasin a le droit d'effectuer
une fouille corporelle, du moment qu'il a l'autorisation du
préfet. Mais allez réclamer ce papier au malabar de deux mètres qui se
tient à la porte du magasin. Pour François, c'est bien simple. Si un
gardien exige de vous fouiller, allez voir dans un autre magasin. Je
lui rétorque : « Oui, mais s'il veut te fouiller quand tu
sors du magasin ? » Éh oui, j'en suis resté à l'époque où
c'était à la sortie du magasin qu'on se faisait fouiller.
Une petite digression personnelle, qui ne provient pas directement
de la réunion. L'argument de Fabien fait penser à celui d'ESR et de
Charlton Heston sur les armes à feu : « Si la possession des
armes à feu est interdite, alors seuls les malfaiteurs possèderont des
armes. » Cet argument est valide, mais il est contrebalancé par
cet autre argument, qui prend le pas sur le premier : « Si
la possession des armes à feu est autorisée, alors n'importe qui peut
commettre une maladresse, et tuer accidentellement une personne de sa
famille ou un voisin. » Dans le cas de la cryptographie, cet
argument n'existe pas. Je ne vois pas comment un accès de colère ou une maladresse dans
l'utilisation d'un logiciel de cryptographie peut provoquer une
blessure ou la mort.
Le commentaire de Fabien sur ma digression :
De plus le fait de coder un mail est de l'ordre de la propriété privée,
il permet d'avoir un moyen fiable de cacher une information aux personnes
autres que celle pour qui elle est destinée. Rien à voir avec les
armes à feux qui sont un moyen de blesser l'autre ou de le mettre hors
d'état de nuire. Je ne suis pas sûr que la comparaison soit possible.
Mon commentaure sur son commentaire : on peut comparer tout et
n'importe quoi, seulement, la comparaison n'ira pas très loin. Et dans
le cas présent, la seule comparaison qui ait une quelconque signification
provient du rapprochement des deux phrases. À part ces deux phrases,
il n'y a effectivement rien de commun, ni dans la nature, ni dans l'utilisation
entre un logiciel comme GPG et une arme.
Fin de la digression.
Comme il l'a promis sur la liste, Fabien nous effectue une démo de
GNUS,
l'une des extensions d'Emacs pour le courrier
électronique, les groupes de nouvelles, et même certains sites de
nouvelles comme Slashdot. Pour
quelqu'un qui reçoit 200 à 300 messages électroniques par jour, il est
indispensable d'avoir un logiciel de courrier électronique de la
puissance de GNUS. L'investissement intellectuel nécessaire
pour apprendre le logiciel et le paramétrer selon ses préférences est
rapidement rentabilisé.
Kai a terminé la traduction
d'Amelia
(Philippe aussi,
d'ailleurs) et celle du livret
Perl 5 précis et concis.
Il continue de travailler pour O'Reilly, en vérifiant la traduction de
Learning Perl,
et en traduisant un livre sur Java et
XSL. Dans la traduction de Learning Perl, comme dans la
plupart des livres sur Perl, il y a de nombreuses plaisanteries, des
calembours, et autres astuces. Lorsque le traducteur en trouve une
qu'il ne comprend pas, ou qu'il n'arrive pas à traduire, il la
supprime purement et simplement de la traduction. C'est arrivé dans
Amelia, mais c'était rarissime, tandis que dans Learning
Perl, cela a l'air d'être beaucoup plus fréquent. Ou alors, la
traduction de flintstone (avec un « f » minuscule)
étant « silex », il a traduit Fred Flintstone par
« Fred Silex », alors qu'il s'agit de
« Fred Pierrafeu ».
Sur certaines machines Windows, on trouve des répertoires
/bin/etc et /usr, en plus de
/Program Files et /Win32. Comment cela se
fait-il ? Les utilisateurs de ces machines ont installé des
logiciels comme
Apache
ou Cygwin, tout simplement.
Les logiciels possèdent des
oeufs de Pâques
dissimulés dans le source ou
des fonctionnalités cachées, c'est bien connu. Ce
qui est moins connu, c'est qu'il en existe d'autres sous
d'autres formes. Ainsi, une
version récente de
OpenSSH
était livrée sur un CD-ROM représentant un
poisson-ballon (?) vêtu en businessman. En regardant ce CD-ROM en
lumière rasante, on pouvait remarquer le dessin d'un deuxième
poisson-ballon qui, lui, avait la tenue d'un maffiosi.
Briac sait comment faire pour se connecter sur la machine de son
domicile lorsqu'il est à son travail en laissant un port TCP/IP ouvert sur
sa machine personnelle. En revanche, l'inverse, techniquement
possible, n'est pas faisable pour des raisons de sécurité, n'importe
qui, pirate ou autre, pouvant bénéficier du port ouvert. En discutant
avec Nicolas, ils examinent une méthode où la machine professionnelle
établirait une connexion en mode client sur le port laissé ouvert
par la machine personnelle, et où la machine personnelle
utiliserait cette connexion pour faire un tunnel et établir une
connexion dans l'autre sens par ce tunnel. Mais même ainsi, cela
introduirait une vulnérabilité dans la machine professionnelle. Si un
pirate s'introduit sur la machine personnelle de Briac, il a alors la
possibilité de s'introduire également sur sa machine professionnelle.
Les risques sont grandement diminués, mais ils existent toujours. Tant
pis.
Puisque nous parlions de OpenSSH, Nicolas a installé la version
2.9 sur une cinquantaine de machines. Et une fois cette tâche
accomplie, la version 3.0 est sortie. Du coup, pour bien faire, il
faudrait qu'il refasse toutes les installations !
Pour changer, il nous a raconté une anecdote positive à propos du
travail d'administrateur système. Il existe un logiciel,
Kickstart, qui facilite l'installation de Linux. On commence
par stocker les fichiers d'installation sur un serveur NFS. On
installe Linux de la façon longue et habituelle sur une machine du
réseau. Une fois Linux installé, on lance Kickstart, et on demande la
création d'une disquette. Puis on passe avec cette disquette sur
toutes les autres machines à configurer, on lance l'installation et on
ne s'occupe plus de rien. Tout se fait tout seul.
BooK nous parle de la configuration des ordinateurs chez
lui. Notamment, il a installé
FreeBSD
sur l'un d'entre eux, alors
qu'il ne connaît quasiment rien à FreeBSD. Pourquoi a-t-il fait cela,
alors ? Tout simplement parce que FreeBSD était le seul système
d'exploitation qui reconnaissait le disque dur de cette machine.
Sniper a profité de la réunion pour se faire installer Linux sur
sa machine portable. Il évoque à ce sujet le fait qu'il trouve les
distributions habituelles un peu trop grosses. Même si l'on demande
l'option « installation minimale », on récupère des modules
qui ne serviront jamais. Il voudrait bien installer le strict minimum
pour avoir une machine qui fonctionne, et ensuite installer au fur et
à mesure les modules dont il a réellement l'utilité.
Il a été question de configuration matérielle, et notamment de
rajouter des disques à des machines existantes. Philippe signale que,
de nos jours, on ne peut pas trouver un disque à moins de 20 Go.
Heureusement, on ne trouve avec cette capacité pour un prix de l'ordre
de 600 F. Mais, demande-t-il, à quoi bon une telle capacité pour
un particulier ? Un système Linux ou OpenBSD bien fourni, plus
un serveur web avec un site ou deux, ça ne demande pas tant. Briac lui
répond que si l'on charge des ficheirs MP3 ou MPEG, on a vite besoin
de cette capacité.
Avec la nouvelle version de
Vim,
est arrivé un livre sur
le sujet. J'avoue que je ne l'ai pas feuilleté, étant donné que
j'utilise d'autres éditeurs. Pour les gros fichiers, ou les sessions
où j'ai besoin de traiter plusieurs fichiers simultanément, j'utilise
Emacs.
Pour les petits fichiers, je me suis remis
à... ed.
À noter une différence entre Nicolas et moi :
j'utilise ed, mais sed me donne des boutons.
Nicolas, lui utilise couramment sed, sans aucun problème,
peut-être même sans consulter la page de man ; en
revanche, lorsqu'il se retrouve dans ed, il est paumé, il ne
sait plus comment s'en sortir. Cela s'est produit récemment, il a fait
une faute de frappe, en oubliant le « s » initial de
sed, et il a pataugé pendant de longues minutes avant de se
quitter l'éditeur et de se retrouver en terrain connu.
Quelqu'un, je ne sais plus qui, a parlé de ses problèmes pour
avoir des programmes portables entre Unix et Windows. Notamment, pour
ouvrir un fichier, il faut rajouter c: au début, et changer
les slashs en backslashs, sachant qu'il s'agit d'un caractère spécial
dans les chaînes C et Perl, et qu'il faut donc en mettre
deux. Plusieurs personnes ont répondu que ce n'était pas la peine de
se fatiguer. Le coup du backslash, c'est uniquement à cause de
COMMAND.COM,
qui a adopté le slash pour les options, et le
backslash pour les séparateurs de noms de répertoire. Le noyau MS-DOS
ou Windows sait très bien interprêter le slash dans les noms de
fichier. Et il n'y a pas toujours besoin de rajouter c: au
début du nom. Si l'on est sûr que le répertoire utilisé figure sur le
disque courant, il n'y a pas besoin de spécifier le lecteur.
Quelques-uns, dont Briac et Nicolas, évoquent les partages de
fichiers par
Napster
(ancienne version),
Gnutella,
et autres. Briac
raconte notamment qu'il regarde qui télécharge quoi, et lorsque
quelqu'un télécharge un morceau composé par un groupe peu connu, il va
voir ce qui existe chez cette personne, car il y a des chances que
cette personne ait elle aussi d'autres groupes peu connus mais tout
aussi intéressants. Ou bien, il contacte la personne par courrier
électronique, pour discuter de leurs goûts musicaux respectifs. C'est
ainsi, notamment, qu'il a échangé des messages avec une personne de
Singapour, et que c'est au bout de trois jours qu'il a constaté que
son interlocuteur était français.
Emmanuel a lui aussi évoqué les téléchargements de fichiers MP3.
Lorsqu'il fait une recherche sur
Britney Spears,
il trouve « tout
ça » (les deux mains écartées d'une soixantaine de
centimètres). Lorsqu'il essaie avec Madonna, il trouve « tout
ça » (le même geste). Lorsqu'il demande du Chuck Berry ou du
Elvis Presley, il trouve « ça » (une seule main, le pouce et
l'index écartés, mais sans être tendus).
À un moment de la discussion, Fabien parlait de son site,
Linux-FR,
et il a évoqué le fait que chaque utilisateur référencé peut
gagner des points d'expérience en participant à la vie du site. En
fonction des points gagnés, l'utilisateur est appelé
« scribe », ou... Cela rappelle
quelque chose
à quelques-uns.
Briac évoque l'historique des feuilles de styles HTML. Une première
version avait été spécifiée par le consortium W3. Puis, Netscape avait
créé de nombreuses extensions, reposant sur l'utilisation de
Javascript, le tout étant appelé « NSCSS ». Netscape a
proposé au consortium d'incorporer ces extensions dans le standard,
mais cela a été refusé. Du coup, les logiciels de Netscape offrent un
support très incomplet des CSS : seules les fonctions qui ont été
réalisées pour NSCSS, et qui portent le même nom que pour le standard
CSS du consortium, sont reconnues. De plus, cela explique pourquoi on
ne peut utiliser les feuilles de style que si le bouton
« feuilles de style » et le bouton
« Javascript » sont cochés tous les deux.
C'est une révélation pour Emmanuel, qui avait remarqué ce comportement
de Netscape, et qui avait renoncé à en comprendre la cause.
La discussion a dérivé immédiatement sur
The Art of Computer Programming.
Il a été question de la date de parution du volume
4, dont on ne peut pas dire grand-chose de sûr. Il a été aussi
question du fait que Knuth s'est mis en retraite anticipée pour se
consacrer à plein temps sur l'écriture de ce volume 4, du fait qu'il a
prévu également la mise à jour des trois premiers volumes, pour
prendre en considération l'évolution des connaissances, et également
pour changer la
machine virtuelle
sur laquelle étaient basés les
exemples de programme. À ce propos, Knuth recherche des bonnes
volontés pour l'aider à réécrire les exemples de programme avec la
nouvelle machine virtuelle.
Nicolas a lu la préface du premier volume. Il n'est pas sûr
de pouvoir parvenir au bout du livre. Il évoque la codification
de difficulté des exercices. Le code commence par M pour
« mathémathique », ou bien par HM pour
« hautement mathématique ». Puis il y a un nombre, qui
indique (avec une échelle approximativement logarithmique) combien
de temps il faudrait pour résoudre ce problème. Ainsi, 50
représente un problème pour la recherche. Knuth donne l'exemple
suivant :
[M50] Prouvez que pour un entier n supérieur à 2,
l'équation
xn + yn = zn
ne possède aucune solution avec des entiers (x, y, z)
différents de 0.
Mais dans la prochaine édition, cet exercice sera peut-être reclassifié
HM45...
Knuth a écrit quelques livres sur « la typographie assistée
par ordinateur ». Pour lire ces livres, il faut s'intéresser à la
fois à l'informatique et à la typographie. Dans cette série de livres,
on en trouve deux, le premier contenant les sources de TEX,
l'autre les sources de METAFONT.
Nicolas évoque un de ses amis, qui l'a converti à TEX,
et qu'il a converti à Perl. Cet ami est l'un de ceux qui s'occupent de
la FAQ LATEX française.
J'ai lu cette FAQ, il y
a un certain temps, et je l'ai trouvé un peu monotone. Cela ressemble
à :
- Comment commencer un paragraphe avec une lettrine ?
- Installez le module dropcaps, disponible sur CTAN.
- Je dois écrire un QCM. LATEX peut-il m'aider ?
- Installez le module exam, disponible sur CTAN.
- J'ai une imprimante couleurs. Est-il possible de mettre en page un document avec des couleurs ?
- Installez le module color, disponible sur CTAN.
[ Bon, d'accord, j'ai un peu caricaturé. ]
Comme vous l'avez deviné,
CTAN
signifie Comprehensive
TEX Archive Network, et propose gratuitement toutes
sortes de compléments (formats, modules, polices, tutoriels) pour les
utilisateurs de TEX ou de LATEX. Mais
Nicolas note une différence importante. Alors qu'il est facile
d'installer un module Perl, l'installation d'un module TEX
est délicate.
François et moi avons abondamment discuté de mathématiques. Parmi
les sujets abordés, il y avait le fait qu'un nombre peut avoir deux
représentations différentes dans une base donnée. Ainsi, 1 et
0,99999... représentent le même nombre. Lorsque l'on fait la
démonstration, les esprits dubitatifs cherchent où est le piège,
puisque certains faux paradoxes du même genre sont basés sur une
division 0 : 0. Mais là, il n'y a pas de division
par zéro, le paradoxe est réel. J'évoque Douglas Hofstadter qui,
lorsqu'il était jeune, avait essayé d'apprendre par coeur les 762
premières décimales de pi, pour pouvoir les réciter, et terminer
par :
1134999999 et ainsi de suite.
François me précise que le record du nombre de décimales de pi
mémorisées est détenu par un Japonais, et qu'il est à 5000 environ. Il
parle également de la différence entre une suite aléatoire et une
suite imprévisible. Les chiffres successifs de pi sont imprévisibles,
ils ne sont absolument pas aléatoires.
Puisqu'il était question de cryptographie avec Fabien, François
m'apprend que le premier algorithme à clé publique était basé sur
le problème du sac à dos (comment remplir un sac à dos avec des marchandises
de volume et de valeur différents, sachant que la capacité du sac à dos
est limitée, et que l'on souhaite optimiser la valeur des marchandises chargées).
Dans sa première version, l'algorithme avait une faille. Ron Rivest
(le R de RSA) a adapté l'algorithme pour combler cette
faille, mais le mal était déjà fait, la réputation de l'algorithme était
déjà anéantie.
Extrait, quasiment mot pour mot, de la discussion :
« Comment il s'appelait, ce mathématicien ? On retrouve
son nom partout. »
« Euler. »
« Non. »
« Gauss. »
« Oui. »
« Forcément. Si c'est pas l'un, c'est l'autre. »
J'ai raconté à François que, le 16 janvier dernier, à l'occasion
de l'ouverture des soldes, j'étais allé chez Brentanos, et que j'y
avais acheté
Fermat's Enigma
au prix de 59 F [ En
fait ce ne sont pas des soldes ; le magasin propose des livres en
promotion tout le long de l'année, mais j'ai choisi cette date
histoire de prétendre que je faisais les soldes ]. Par
association d'idée, je suis allé au rayon francophone de ce même
magasin, et j'y ai trouvé Le Théorème du Perroquet, où il est
également question de l'histoire des mathématiques, en particulier du
Grand Théorème de Fermat. Ayant lu ces deux livres à deux mois
d'intervalle, j'ai été amusé par le fait qu'il y avait certaines
différences entre les deux livres. Par exemple, les deux livres
présentent la vie d'Évariste Galois, mais tandis que Denis Guedj
raconte qu'Évariste avait porté un toast à Louis-Philippe, en tenant
un couteau à la main, Simon Singh préfère évoquer les échecs
successifs d'Évariste au concours de Polytechnique.
Un autre génie mathématique qui a eu une mort précoce, c'est
Ramanujan. Il paraît que de nombreux points d'interrogation planent
sur son oeuvre : il a utilisé un certain nombre de raccourcis
dans ses démonstrations, raccourcis qui lui paraissaient évidents,
mais qui restent obscurs pour les mathématiciens qui lui ont succédé.
Un sujet qui me tracasse. Soit l'ensemble des entiers complexes
(nombres de la forme a + b i, avec a
et b entiers). Il est possible, dans cet ensemble de définir
des nombres premiers, tout comme dans l'ensemble des entiers naturels
ou des entiers relatifs. Là où le bât blesse, c'est que Fermat's
Enigma assure que la décomposition d'un entier complexe en
nombres complexes premiers n'est pas unique, tandis qu'un autre livre,
le Dictionnaire des nombres remarquables de François le
Lionnais, assure qu'elle l'est. Fermat's Enigma donne bien un
exemple, mais il est complètement foireux, car les facteurs de la
décomposition ne sont pas des entiers complexes. La question que je me
pose est donc : « la décomposition des entiers complexes en
facteurs premiers complexes est-elle unique ou pas ? » À
noter que Knuth, dans TAOCP, traite des entiers complexes, mais pas des nombres
premiers complexes.
Et nous avons également parlé de la conférence de Cole, en 1903,
sur le nombre de Mersenne 267 - 1, conférence lors
de laquelle il n'a pas dit un seul mot ; nous avons parlé
également des congruences, des logarithmes discrets, et divers
autres sujets qu'il serait trop long d'exposer.