Logo des Mongueurs de Perl

La cryptographie est à l'ordre du jour

Un historique de toutes nos réunions

 
 

Table des matières

mercredi 7 novembre 2001

La voix du secrétaire (Jean)
Présents à la réunion : 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.

Perl

  • 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 :
    1. Perl théorique,
    2. Perl pratique (les constructions idiomatiques),
    3. les modules du noyau,
    4. 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épertoire CPAN 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éputation est dé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.

    Informatique

  • 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 deux RFC, 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.

    Internet

  • 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.

    Sujets divers

  • Philippe est en train de lire Literate Programming, de Knuth. Nous en avons à peine parlé. Stéphane a rappelé qu'un autre ouvrage de Knuth, the Stanford Graphbase, que lui et moi avons lu, a été écrit justement avec un outil de programmation littéraire écrit par Knuth.
  • 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.
  • Finalement, je citerai deux discussions que Stéphane a évoquées sur la liste, mais que je n'ai absolument pas suivies. Stéphane a évoqué le copyright à l'age digital et un article de E. Moglen, ainsi que la gallerie de stéganos de DecSS.

    Retour aux Mongueurs

    Vérification du HTML

    Paris, le 5 July 2006
    Copyright © The Paris Perl Mongers, 1999-2008