David Madore's WebLog

This WebLog is bilingual, some entries are in English and others are in French. A few of them have a version in either language. Other than that, the French entries are not translations of the English ones or vice versa. Of course, if you understand only English, the English entries ought to be quite understandable without reading the French ones.

Ce WebLog est bilingue, certaines entrées sont en anglais et d'autres sont en français. Quelques-unes ont une version dans chaque langue. À part ça, les entrées en français ne sont pas des traductions de celles en anglais ou vice versa. Bien sûr, si vous ne comprenez que le français, les entrées en français devraient être assez compréhensibles sans lire celles en anglais.

Note that the first entry comes last! Notez que la première entrée vient en dernier !

Index of all entries — Index de toutes les entréesXML (RSS 1.0) — Recent comments — Commentaires récents

(dimanche)

J'apprends un petit peu de néerlandais

Je voyage très peu. Que ce soit une cause ou une conséquence de ce fait, je ne sais pas bien, mais c'est en tout cas certainement lié au principe (que je considère comme le minimum de respect à avoir pour tout endroit qui m'accueille, fût-ce brièvement) que je ne mets pas les pieds à un endroit sans avoir fait un effort raisonnable d'apprendre la langue locale. Un effort raisonnable, évidemment, ça ne veut pas dire que je me fixe comme but de la parler couramment, mais il est aussi hors de question de me contenter d'apprendre à baragouiner les mots pour dire bonjour, merci, au revoir et je ne parle pas klingon. Par exemple, en japonais[#], je sais dire ce kimono n'est pas bleu : on ne sait jamais, ça pourrait servir, des fois que le kimono serait rouge. Plus sérieusement, ce qui m'intéresse avec les langues, ce n'est pas tellement d'apprendre des longues listes de vocabulaire, mais d'avoir une idée basique sur la façon dont elle fonctionne, une idée de la logique et de la structure, bref, plutôt de la grammaire[#2] voire de la philologie ; mais aussi arriver à créer un petit compartiment de mon cerveau pour cette langue et pour sa « mélodie » propre. Disons qu'en général le niveau que je vise dans une langue — sans forcément l'atteindre — est à peu près celui qui me permettrait, si j'ai à ma disposition un texte bilingue, de retrouver quel mot de l'original va avec quel mot de la traduction, et de comprendre la structure du texte et de l'apprécier, même si je ne pourrais pas le comprendre sans aide. Je procède en utilisant en parallèle la méthode Assimil (j'en ai déjà parlé) pour assouplir mes neurones à la musique de la langue et tirer le meilleur parti de ma mémoire principalement auditive, et d'autre part des grammaires ou textes linguistiques pour satisfaire ma curiosité.

Bref. On m'invite pour deux jours aux Pays-Bas (à Leiden), pour évoquer un travail mathématique. Je n'aurai sans doute pas l'occasion d'articuler un mot de néerlandais (sauf peut-être au début de mon exposé pour remercier les organisateurs), mais peu importe : j'ai acheté l'Assimil néerlandais, et j'en suis actuellement à la 13e leçon[#3].

Forcément, si je connais déjà l'anglais et l'allemand, le néerlandais (que certains ont décrit comme la langue que des marins allemands et anglais saouls se sont mis à parler ensemble après un trop long temps passé en mer) devrait être plus facile que, oh, disons, l'arabe. D'autant plus qu'à peu près tous les produits alimentaires vendus en France ont un double étiquetage en français et en flamand pour pouvoir être vendus en Belgique, et que je suis du genre qui lit ce genre de choses. Toujours est-il que, pour ce qui est du néerlandais écrit, je comprends spontanément des choses très faciles, comme l'extrait suivant de la page d'accueil de nl.wikipedia.org aujourd'hui :

18 mei – Emmelie de Forest wint namens Denemarken het 58e Eurovisiesongfestival met het nummer Only Teardrops. Nederland eindigt negende met Anouk, België is twaalfde met Roberto Bellarosa.

18 mei – De Franse president François Hollande ondertekent de wet op het homohuwelijk. Mensen van hetzelfde geslacht kunnen in Frankrijk vanaf eind mei met elkaar trouwen.

[Traduction littérale : 18 mai — Emmelie de Forest gagne au nom du Danemark le 58e festival de chanson de l'Eurovision avec le numéro Only Teardrops. Les Pays-Bas finissent neuvièmes avec Anouk, la Belgique est douzième avec Roberto Bellarosa. | 18 mai — Le président français François Hollande signe la loi sur le mariage homo. Les personnes de même sexe peuvent se marier ensemble en France à partir de fin mai.]

Le deuxième paragraphe serait un peu difficile si je ne savais pas de quoi il parlait, parce que le mot wet (qui s'avère signifier loi) n'est pas transparent pour le germanophone ou pour l'anglophone (si quelqu'un peut m'en donner l'étymologie, d'ailleurs, je suis preneur), pas plus que la parenté entre huwelijk (le mariage) et l'allemand Ehe ; mais le reste est assez évident quand on connaît l'allemand. (À ce propos, pour ceux qui lisent l'allemand, je renvoie à ce document qui est très intéressant. Et en moins sérieux, pour ceux qui comprennent l'allemand parlé, ce comique raconte de façon amusante l'effet que fait aux allemands l'accent néerlandais.)

Il n'y a pas que le vocabulaire néerlandais qui est parallèle à l'allemand : les structures grammaticales sont aussi très proches (l'emploi de nombreuses prépositions, les verbes à particules séparables ou inséparables, la formation des passés et participes, la place des verbes dans les principales et subordonnées, la négation par nicht/kein en allemand et niet/geen en néerlandais, etc.). Cela aide énormément, et il est assez clair que le statut du néerlandais comme une langue à part plutôt que comme une variante du bas-allemand est surtout une question de convention. Globalement, le néerlandais a l'air un peu plus facile (il a fusionné deux des genres de l'allemand en un genre commun[#4] et il a à peu près supprimé les cas), sauf peut-être pour ce qui est de sa prononciation ou de son orthographe, qui ont l'air moins systématiques[#5].

Mais qui dit proximité dit aussi risque de confusion, soit qu'il y ait de faux amis (ou des différences subtiles de sens), soit qu'on ait tendance à transposer spontanément un mot sans qu'il existe de l'autre côté, soit, encore qu'on recopie bêtement le mot en oubliant que la phonétique/grammaire n'est pas la même. Pour ce qui est des faux amis, sans même parler de wie qui veut dire qui en néerlandais alors que le mot allemand identique signifie comment, j'ai déjà remarqué par exemple qu'en néerlandais jawel veut dire si (c'est-à-dire oui-en-réponse-à-une-question-négative) alors qu'en allemand jawohl est simplement emphatique ; klaar en néerlandais signifie prêt, fini, alors qu'en allemand klar signifie clair ; even en néerlandais signifie brièvement alors que eben en allemand signifie il y a un instant ; et la limite entre les verbes néerlandais mogen (avoir la permission / aimer) et durven (oser) est différente de celle entre les verbes allemands mögen (se pouvoir / aimer) et dürfen (avoir la permission / oser). J'aimerais trouver une liste de faux amis courants, ça m'aiderait beaucoup.

Ceci dit, en fait, au niveau complètement débutant où j'en suis, ce qui me perturbe plus, c'est que mon cerveau avait déjà créé une petite case pour une langue germanique que je connais un tout petit peu, qui n'est pas l'allemand, qui a deux genres grammaticaux (un neutre plus ou moins associé à la lettre ‘t’ et un non-neutre), et dont la prononciation est plus irrégulière que l'allemand, mais où notamment la lettre ‘u’ se prononce souvent à peu près [ʉ], et c'est le suédois. Entre autres, j'ai régulièrement envie d'utiliser le pronom suédois de la seconde presonne du singulier du (qui s'écrit pareil qu'en allemand, mais qui se prononce plutôt /dʉː/, à peu près comme le même mot se lirait en néerlandais), alors qu'en néerlandais c'est je[#6].

[#] Je ne suis jamais allé au Japon, mais je n'ai pas dit que je ne cherchais à apprendre un minimum que des langues des pays où je mets les pieds.

[#2] Quand j'apprenais l'allemand au lycée, je faisais des efforts très réduits pour le vocabulaire, si bien que j'ai toujours une capacité d'expression assez pourrie, par contre je prenais un plaisir infini à enchaîner les propositions et les constructions alambiquées (quoi, vous avez remarqué que j'aime faire des phrases longues et lourdes ?) et à demander à mes professeurs dans quel ordre il faut mettre les mots à la fin de Leute, denen hätte geholfen werden sollen (=Leute, denen man hätte helfen sollen). Et ce n'est rien à côté de ce que mes profs de latin ont dû souffrir avec mes questions. (Par contre, mes profs de russe, moins, parce que le russe se prête moins aux enculages de mouches grammaticales : la réponse est presque toujours c'est comme ça, ce n'est pas logique, et c'est tout.)

[#3] Sur 100 (je crois que c'est une constante de la méthode Assimil que d'avoir 100 leçons) : on peut donc mesurer son progrès comme un pourcentage vers un hypothétique niveau j'ai-tout-fini (où ils vous encouragent à recommencer à zéro en cherchant à retenir plus activement), qui doit correspondre déjà à un niveau de maîtrise non ridicule pour la plupart des langues. Mais je ne compte pas aller jusque là pour le néerlandais. Je me suis arrêté à 13% pour le suédois, 13% aussi pour le japonais, quelque chose du même genre pour le hongrois, et 42% pour l'arabe (ce qui, soit dit en passant, veut dire que je parle considérablement mieux suédois qu'arabe, évidemment…).

[#4] Le genre commun voulant donc dire masculin-ou-féminin, par opposition au neutre. Mais comme un de mes amis me l'a fait remarquer, le terme évidemment correct pour désigner masculin-ou-féminin, le non-neutre, dans les langues qui ont cette distinction, ce devrait être le utre, puisque neutre, étymologiquement, c'est ne+utre, c'est-à-dire ni l'un ni l'autre (du latin uter, l'un ou l'autre).

[#5] Et moins standardisée, pour ce qui est de la prononciation : autant il existe un standard à peu près clair de la prononciation de l'allemand (sans exclure de nombreuses variations géographiques, bien sûr, mais une sorte d'équivalent de la Received Pronunciation anglaise), autant le néerlandais a l'air de ne pas admettre de prééminence d'un accent sur les autres. Le ‘r’, par exemple, peut se prononcer « à l'espagnole » (comme une battue alvéolaire), « à la française » (comme une uvulaire) ou « à l'anglaise » (comme une spirante alvéolaire), et ce n'est pas la seule lettre qui varie ainsi (le ‘g’/‘ch’, le ‘w’, le ‘v’ et le ‘z’ admettent aussi des variations géographiques) ; les règles d'assimilation ont aussi l'air de varier d'un endroit à l'autre (j'entends dire que certains néerlandophones ne font même pas de distinction phonémique entre sourdes et sonores). D'ailleurs, même la grammaire semble moins « standardisée » que celle de l'allemand.

[#6] Ccomme l'anglais you, dont le nominatif correct est d'ailleurs ye, le néerlandais a repris un pronom pluriel comme pronom singulier pour la seconde personne du pluriel ; sauf que le néerlandais a aussi un pronom de politesse u, et il a aussi un pronom pluriel, jullie, construit sur le modèle de y'all ou you guys utilisé dans cette fonction dans certains coins des États-Unis ; comme en plus le pronom singulier d'origine, gij, l'analogue du thou anglais, a l'air de continuer à exister dans certaines régions néerlandophones, tout ça fait beaucoup de pronoms de la seconde personne pour une seule langue !

(jeudi)

Déprimante sécurité informatique

[La réflexion qui suit est sans doute assez décousue et mal écrite, parce que j'écris comme les idées me viennent, sans prendre le temps de les structurer correctement, et je n'ai pas envie de me relire. C'est même tellement en vrac que les paragraphes qui suivent peuvent sans doute se lire dans à peu près n'importe quel ordre.]

Hier a été révélé un trou de sécurité assez grave dans le noyau Linux (détails ici, ici et  ; et pour une explication très détaillée). Et ce n'est pas comme si c'était rare : des vulnérabilités de cette nature sont annoncées environ tous les deux ou trois mois (estimation au doigt mouillé, je n'ai pas fait de stats précises). À chaque fois je perds des heures à recompiler, ou au moins réinstaller, des noyaux pour toute une flopée de machines que j'administre (déjà pour mes DreamPlugs c'est douloureux, et pour mon téléphone j'ai jeté l'éponge).

C'est tout de même ennuyeux : ça veut dire, par exemple, que toute personne ayant un téléphone Android et n'ayant pas reçu une mise à jour depuis hier, est à la merci d'une application malicieuse qu'il installerait ou aurait déjà installée. (Bon, le côté positif, c'est que ceux qui ont un téléphone Android verrouillé peuvent en profiter pour le déverrouiller, i.e., devenir root dessus.)

Pour éclaircir les choses pour le lecteur profane, précisons que la plupart des systèmes informatiques actuels distinguent essentiellement trois niveaux de confiance :

  1. les administrateurs (root en jargon Unix), qui ont un accès complet à la machine,
  2. tout ce qui tourne sur le système mais qui n'est pas administrateur (les utilisateurs non-privilégiés), et qui a donc un accès limité à certaines ressources,
  3. et tout ce qui n'est pas censé avoir accès au système (i.e., le reste du monde).

Il y a donc, en simplifiant, deux barrières à maintenir : la première interdit aux utilisateurs non-privilégiés d'acquérir le privilège d'administrateur, et quand il y a un trou dans cette barrière le jargon Unix parle de local root exploit ; la seconde interdit au monde extérieur d'entrer dans le système ; parfois un trou permet de passer à travers les deux barrières simultanément, et on parle de remote root exploit (heureusement, c'est très rare). C'est évidemment très simplifié, parce qu'il y aussi des barrières entre les différents utilisateurs non-privilégiés. Le trou que je prends comme exemple est un local root exploit, i.e., un trou dans la première barrière : toute personne ayant un accès à un système Linux peut en prendre un contrôle complet. Par exemple, une application sur un téléphone Android opère comme un utilisateur non-privilégié (il y en a un par application, essentiellement), et comme Android utilise le noyau Linux et que cette vulnérabilité concerne toutes les versions depuis fort longtemps, toutes les architectures, et quasiment toutes les circonstances, ces applications peuvent passer administrateur. Bon, heureusement, on espère que l'immense majorité des applications ne sont pas malicieuses (et notamment celles qu'on utilise depuis longtemps n'ont certainement pas été écrites pour déclencher du code malveillant le jour où un trou de sécurité serait découvert), néanmoins il est certain qu'il y en a. Par ailleurs, cela signifie que si une application, sur un système Linux quelconque, à défaut d'être malveillante, est elle-même vulnérable à autre chose (i.e., qu'il y a un trou dans la deuxième barrière, ce qui est possible pour à peu près n'importe quoi qui communique avec l'extérieur, soit beaucoup de choses), toute la sécurité est perdue.

Je prends surtout l'exemple des téléphones Android, parce que pour beaucoup d'autres systèmes Linux, notamment tout système sur lequel il n'y a qu'un seul compte utilisateur, la barrière entre utilisateur et administrateur ne sert pas à grand-chose : dès que le navigateur web est vulnérable, de toute façon le plus grave est déjà acquis.

Certes, le fait qu'il y ait un trou n'est pas la fin du monde : une vulnérabilité, ça se corrige, le correctif est déjà paru, il suffit de l'appliquer (en plus, pour ce trou particulier, il est possible sur certains systèmes d'appliquer un correctif « à chaud », une rustine sur le trou, comme montré par le deuxième lien tout en tête de cette entrée).

Sauf que : les fabricants de téléphone ne sont généralement pas très pressés d'appliquer des correctifs de sécurité. Ils ne le font que lentement, et, bien sûr, que pour leur tout derniers modèles : HTC, Motorola et toute la bande n'ont qu'un intérêt très faible à s'occuper de la sécurité de leurs clients d'il y a deux ou trois ans. Je pense que les pouvoirs publics devraient imposer à toute personne qui vend un téléphone mobile (ou équivalent : tablette ou autre) qui ne soit pas complètement ouvert de fournir des mises à jour de sécurité pour tous les problèmes portés à sa connaissance et pour une durée clairement annoncée lors de l'achat de l'appareil, et qui ne pourrait pas être inférieure à cinq ans. Ou alors ils doivent fournir toutes les informations nécessaires pour que l'homme de l'art (la communauté, donc) puisse corriger lui-même les trous de sécurité. Parce que actuellement, recompiler un noyau Linux pour son téléphone (sans même parler du reste d'Android), c'est extrêmement difficile : les sources de Linux sont peut-être disponibles, mais pas la configuration exacte que le fabricant a utilisée, sans parler des patchs propriétaires et drivers binaires.

Le problème des trous de sécurité, aussi, c'est que ceux qui les exploitent sont malins : le plus souvent, ils ne l'utilisent pas directement contre le système dont ils exploitent un trou. Par exemple, quand j'attire l'attention de ma maman sur l'importance de mettre à jour tous les logiciels sur son Mac (notamment le lecteur Flash, dont on découvre un trou de sécurité, lui, quasiment toutes les semaines), elle me dit qu'elle n'a rien de vraiment important dessus : ce qui est sans doute vrai, mais ce qui intéresse les black hats payés par la mafia russe ou chinoise ce n'est pas d'avoir accès aux photos de chat sur le Mac de ma maman, c'est de se servir de ce Mac comme un relai ou membre d'un botnet pour, dans le meilleur des cas, envoyer du spam pour du Viagra, et dans le pire des cas, monter des attaques denial-of-service (c'est-à-dire qu'on ne cherche pas à pénétrer la cible, on cherche à la submerger de requêtes) contre, par exemple, l'architecture centrale d'Internet.

Tout ceci est fort déprimant parce que la sécurité informatique est un sujet sur lequel l'utilisateur lambda n'est pas renseigné, et on ne peut donc pas s'attendre à ce qu'il ait des réactions sensées — le plus souvent, cela reste au niveau du quasi-rituel, comme faire tourner des antivirus. Et surtout, il faut bien l'avouer : nous (nous humains, collectivement) ne savons pas programmer : en théorie il est parfaitement possible de faire du code qui ne comporte aucun trou de sécurité, mais nous ne savons pas (il y a des gens qui prétendent savoir écrire du code sans aucun trou de sécurité, et qui ont sans doute raison, mais bizarrement ils n'écrivent jamais quelque chose d'aussi complexe qu'un navigateur web). Du coup, on se retrouve devant cette boucle infinie : trouver un trou, se précipiter pour le boucher, attendre le suivant, répéter à l'infini. Et celui qui a trouvé un trou sans prévenir les autres (le black hat), il a un pouvoir potentiellement immense. Or le trou qui me sert de prétexte pour écrire cette entrée, il semble que certains le connaissaient depuis deux ou trois ans et le gardaient pour eux (et il est probable que l'auteur de l'exploit en ait un bon nombre d'autres comme ça sous le coude).

La moindre des choses, je trouve, ce serait d'essayer de faire une estimation du nombre de trous de sécurité de cet ordre qui existent actuellement dans Linux. Je pense qu'on doit pouvoir y arriver avec des statistiques assez élémentaires : en regardant l'âge de chaque bout de code au moment où un trou est découvert dedans, on doit pouvoir estimer le temps moyen qu'un trou survit avant d'être détecté et corrigé — et on pourra alors estimer le nombre typique de trous par ligne de code, et donc le nombre de trous total dans Linux (il faudra sans doute faire des stats un peu plus fines parce que toutes les lignes de code ne sont pas équivalentes, mais toujours est-il que c'est possible, et ce serait un travail intéressant à refiler à un étudiant ou stagiaire, je devrais y réfléchir).

Y a-t-il une lueur d'espoir ? Il me semble en effet que la meilleure — ou plutôt la moins mauvaise — réponse que nous ayons pour l'instant trouvé aux trous de sécurité, ce sont les mécanismes de cloisonnement (sandboxing) en tous genres : c'est-à-dire tout ce qui permet d'ajouter de nouvelles barrières de sécurité, et notamment de donner le moins de permissions possibles aux programmes auxquels on n'a pas la plus grande confiance, ou dont ils n'ont pas besoin (par exemple, le trou dont je parle initialement repose sur l'utilisation de l'appel système exotique sys_perf_event_open() : et il y a beaucoup à dire sur le fait qu'on ne devrait pas donner à quelque programme ou utilisateur que ce soit le droit de faire un appel système sortant des appels Unix traditionnels sans une bonne raison). Malheureusement, les mécanismes de cloisonnement souffrent de beaucoup de problèmes d'utilisabilité : mettre en place une machine virtuelle est encore lourd et pénible (quand le BIOS de votre portable ne vous l'interdit pas tout simplement), et pour ce qui est de cloisonnements moins lourds, même si ce genre d'outil a l'air extrêmement utile et prometteur, ça reste encore très difficile et mal supporté de faire quelque chose d'aussi simple que lancer un processus sous-privilégié sous Linux.

(lundi)

Les 18 voyelles cardinales

Je me passionne pour la phonétique un peu de la même manière que pour la typographie : apprendre à reconnaître précisément les sons que l'on entend ou que l'on prononce soi-même, c'est un peu comme apprendre à remarquer les caractéristiques des caractères écrits que l'on croise, c'est apprendre à développer son sens de l'observation sur quelque chose qu'on a facilement tendance à ignorer. (Cela peut devenir obsédant, d'ailleurs : comme Donald Knuth le faisait remarquer, I can't go to a restaurant and order food because I keep looking at the fonts on the menu — et je ne peux plus m'empêcher de faire toutes sortes d'observations sur la manière dont les gens parlent.) Et aussi bien pour apprendre à reconnaître les polices de caractères que pour identifier ou reproduire les propriétés phonétiques des sons du langage, il faut « faire ses gammes », c'est-à-dire, s'efforcer de se familiariser avec des points de référence standards : en typographie, les polices les plus courantes (Times, Helvetica, Palatino, Futura, Univers, Optima, etc.), et en phonétique, les sons de l'alphabet phonétique. Ici je vais parler un peu de 18 sons de référence appelés les voyelles cardinales.

La phonétique étant une discipline tout en nuances, ce n'est pas aussi facile qu'on pourrait le croire de définir sans ambiguïté ce qu'est une voyelle et une consonne[#]. Il y a tout de même une distinction concrète entre les unes et les autres, c'est que les consonnes sont assez bien séparées les unes des autres (il y a un ensemble assez discret de possibilités) tandis que les voyelles forment un espace continu. Toujours est-il que je voudrais parler ici un peu des voyelles.

Dimensions de l'espace des voyelles

La première question évidente est de déterminer la dimension de cet espace des voyelles, c'est-à-dire le nombre de caractéristiques indépendantes qu'elles peuvent avoir, un peu comme on détermine que l'espace des couleurs est de dimension 3. La réponse pour les voyelles est en plus de la longueur et de la hauteur, encore 2 ou 3 dimensions, voire un petit peu plus — l'incertitude vient du fait que certaines dimensions sont plus « étroites » en ce sens qu'elles permettent moins de variation, ou encore ne seront pas vraiment comptées dans la caractéristique de la voyelle.

Les deux dimensions complètement évidentes, et que j'écarte immédiatement, ce sont la longueur de la voyelle (ou quantité de celle-ci, c'est-à-dire le temps qu'elle dure) et sa hauteur (c'est-à-dire la note sur laquelle elle est prononcée) : ces paramètres sont importantes dans certaines langues qui peuvent contraster voyelles brèves et longues, et/ou donner un sens aux tons (hauteurs ou variations de hauteur). Ce qui reste quand on abstrait ses deux dimensions, donc ce qui m'intéresse principalement, s'appelle la qualité de la voyelle.

i y e ø ɛ œ a ɶ ɑ ɒ ʌ ɔ ɤ o ɯ u ɨ ʉ

Les deux dimensions essentielles de la qualité des voyelles sont l'ouverture et l'avancement de celles-ci. Pour se faire une première idée de ces dimensions, disons que l'ouverture de la voyelle est ce qui distingue les mots français fi, fée et fait (à supposer que ces deux derniers soient distincts) ou encore fou et faux, voire folle si on omet la consonne finale de ce dernier : dans chacune de ces deux séries (fi/fée/fait d'une part et fou/faux/fo[lle] de l'autre), l'ouverture est croissante, c'est-à-dire qu'on a successivement une voyelle fermée, mi-fermée et mi-ouverte ; pour ce qui est de l'avancement, on contrastera fut et fou ou feu et faux ou encore [coi]ffeu[r] et fo[lle] : dans chacune de ces séries, on passe d'une voyelle antérieure/centralisée à une voyelle postérieure.

Sur le diagramme standard servant à positionner les voyelles, et que votre navigateur doit afficher à droite s'il supporte le SVG, et qu'on trouve sur Wikipédia sinon, l'ouverture est figurée verticalement (la ligne horizontale du haut correspondant aux voyelles fermées, la deuxième aux mi-fermées, la troisième aux mi-ouvertes, la quatrième aux ouvertes), et l'avancement est figuré horizontalement, avec à gauche les voyelles antérieures et à droite les postérieures.

(mercredi)

Dix ans !

Comme certains n'ont pas manqué de me le rappeler, ça fait dix ans que je tiens ce blog (la seule partie de ce site web qui soit vraiment vivante), dix ans pendant lesquels j'ai écrit 2136 entrées (celle-ci est la 2137e), à un rythme qui a cependant varié au cours du temps :

[Graphe de la taille de mon blog en fonction du temps]
(En abscisse, le temps en années fractionnaires, en ordonnée la taille du blog : en rouge le nombre d'entrées, échelle de gauche, et en vert le nombre de kilo-octets, échelle de droite.)

[Moi posant en mars 2004 pour le calendrier des pédéblogueurs français]Je ne vais pas redire ce qu'a déjà écrit Matoo, lequel a commencé son blog juste quelques semaines avant moi et qui me grille donc la politesse de raconter ce que ça faisait de commencer un pédéblog en 2003 et quels confrères nous lisions alors. De cette époque il ne reste que beaucoup de liens cassés, car Internet n'a pas de mémoire et les URL ne sont pas pérennes, même pas celle de la photo[#] pour laquelle je posai en mars 2004 (mon blog était encore hébergé à l'ENS) pour le calendrier des (jeunes et fous) pédéblogueurs français, et que je reproduis ci-contre ; du coup, je ne peux même pas aller regarder lesquels des autres garçons ayant posé pour ce calendrier tiennent encore un carnet.

Il semble que je parle moins de moi et plus de trucs chiants (bref, en rapport à la photo, il semble que le focus se soit redirigé du garçon sur le bureau vers le tableau derrière lui). Ceci explique sans doute ce qui se voit nettement sur le graphique ci-dessus en comparant l'allure des deux courbes (en rouge nombre d'entrées en fonction du temps, en vert nombre de kilo-octets en fonction du temps), à savoir que j'écris moins mais plus long. Tout le contraire de tous ces gens qui sont passés à Twitter[#2].

Dans un sens, je regrette le début de ce blog où je racontais mes lamentations de pédé frustré. C'était peut-être moins sophistiqué que la vulgarisation scientifique à laquelle je me livre maintenant, mais c'était aussi plus personnel, plus spontané (et puis, je dois avouer que je me trouve mignon, sur la photo de calendrier). Je ne regrette certainement pas ma déprime, bien sûr, mais peut-être parce que ma vie sociale était quand même plus diversifiée : je n'avais pas de poussinet, je n'avais peut-être pas les bons amis qui se sont stabilisés depuis, mais j'avais sans doute plus de copains occasionnels, notamment parmi les garçons homos, et d'opportunités de faire des rencontres nouvelles.

Techniquement, j'ai toujours tenu à utiliser un moteur écrit par moi-même (l'actuel est en Java, après un machin en C qui avait remplacé une première tentative en XSLT). Il faut encore que je réécrive le moteur de commentaires pour l'intégrer avec le blog lui-même (actuellement il est complètement indépendant), mais j'avoue n'être pas terriblement pressé de casser les choses qui marchent. Ce dont je suis surtout content c'est des évolutions du HTML qui, il y a dix ans, semblait un peu coincé sans savoir où il allait, et qui maintenant a l'air d'avoir au moins un avenir intéressant.

Quoi qu'il en soit, souhaitez-moi de bloguer encore au moins dix nouvelles années !

[#] Je voudrais bien refaire des photos dans le même genre, dix ans (et un peu de muscu) plus tard. Si vous connaissez des photographes doués et patients avec les modèles qui ont l'air crispés dès qu'on essaie de les prendre en photo (pour la photo du calendrier le nombre de poses a été tellement long que j'ai failli mourir de froid dans le lycée non chauffé de Nogent-sur-Marne), je suis preneur. Parce qu'une chose n'a pas changé depuis 2003, c'est mon obsession à trouver des images de moi qui me plaisent (ce qui est très difficile).

[#2] Je n'ai jamais trouvé Twitter intéressant, pas seulement parce qu'il faut faire court, mais aussi parce que je trouve la relation message→réponse beaucoup trop confuse, et je n'aime pas le mécanisme des hashtags. À la limite je serais plus intéressé par Google+, et d'ailleurs je me demande souvent si ce serait considéré comme poli ou normal d'y mettre de façon automatique un lien vers chaque nouvelle entrée que j'écris ici.

(samedi)

Encore un peu de TORANT

Plutôt que parler sérieusement de quelque chose, ce qui prend beaucoup de temps parce que je ne sais pas faire court, je vais sortir mon canon à prétéritions et parler des choses dont je ne vais pas parler maintenant, ce qui va peut-être, en fait, me faire passer l'envie d'en parler plus tard. Voici, donc, les leçons de choses auxquelles vous avez échappé aujourd'hui :

  • Un jour il faudra que j'écrive un long rant au sujet de la sécurité informatique et de mes inquiétudes sur l'écart grandissant entre son importance et l'impossibilité de former les utilisateurs de moyens informatiques (i.e., essentiellement tout le monde) à en prendre conscience et à adopter les comportements de plus en plus contraignants qu'elle impose ; sur à la difficulté à réconcilier la demande légitime de fonctionalités toujours plus sophistiquées et l'incapacité humaine que nous avons à les réaliser de manière sûre ; sur l'omniprésence de technologies à la sécurité trouée, entre tous les pacemakers du monde, une quantité hallucinante de smartphones, et tous les navigateurs dont le plugin flash n'est pas mis à jour à chaque trou de sécurité découvert, c'est-à-dire environ toutes les semaines.
  • Il est possible que la prochaine Conférence générale des Poids et Mesures (qui se tiendra en 2015) redéfinisse quatre des sept unités SI : le kilogramme serait redéfini grâce à la constante de Planck (réalisée par une balance de Watt : ce qui mettrait à la retraite le vénérable prototype international actuellement déposé sous trois cloches de verre dans un coffre-fort à atmosphère contrôlée au sous-sol du pavillon de Breteuil à Sèvres), le kelvin grâce à la constante de Boltzmann (plutôt que comme la fraction 1/273.16 de la température thermodynamique du point triple de l'eau), la mole comme un nombre exactement donné d'atomes ou molécules (plutôt que comme le nombre contenu dans 12g de carbone-12), et l'ampère à l'aide de la charge de l'électron (plutôt que par la perméabilité du vide qui est actuellement exactement 4π×10−7 henrys par mètre). Je voudrais faire un peu le point sur la manière dont ces unités sont réalisées ; faute de quoi, je vous renvoie sur cette version préliminaire de la brochure SI modifiée et ce documentaire à sortir sur le kilogramme.
  • Toujours dans le domaine de la physique, suite à une conversation que j'ai eue aujourd'hui à ce sujet avec mon poussinet, je me suis rappelé que je devais écrire une suite à cette entrée sur les neutrinos (où j'expliquais pourquoi ils « oscillent ») pour parler des quarks et de la matrice de Cabibbo-Kobayashi-Maskawa et de pourquoi le fait qu'il y en ait trois familles, combiné à un fait de théorie des groupes de Lie, explique peut-être l'asymétrie entre matière et antimatière dans l'Univers. Et, globalement, faire un peu de vulgarisation sur les interactions faibles ne serait pas un mal maintenant que, c'est officiel, le boson de Higgs existe.
  • Depuis une éternité je me dis qu'il faut que j'écrive une entrée dans ce blog sur la récursion ordinale : c'est-à-dire comment définir des « super » ordinateurs qui manipulent des ordinaux, pourquoi ces ordinateurs sont une généralisation naturelle des machines de Turing et pourquoi ils nous apprennent des choses très intéressantes sur les grands ordinaux dénombrables et les grands nombres (et aussi l'univers constructible), et pourquoi les informaticiens devraient s'y intéresser même si les matheux font mine d'avoir abandonné le sujet il y a vingt ou trente ans. (Bon, cette entrée risque de ressembler à un bouquin, un peu comme celle sur les octonions que je promets aussi depuis une éternité, à la différence qu'elle n'est même pas commencée : il faut que j'apprenne à publier sous forme de feuilletons.)
  • Toujours dans le domaine de l'informatique théorique, je devrais parler un peu de grammaires sans contexte comme j'ai parlé récemment d'expressions régulières. (Je dois dire que j'ai été Éclairé par ce texte qui m'a enfin permis de comprendre des choses qui étaient restées obscures pour moi pour la simple raison qu'elles ne sont proprement expliquées dans aucun bouquin, c'est d'ailleurs un scandale.) À tout le moins, il faudrait que j'explique correctement la différence entre un parseur descendant et un parseur ascendant sur un exemple plus clair que ceux qu'on donne habituellement et qui sont franchement merdiques.
  • Un peu de linguistique : j'aurais quelques considérations à 0.02¤ à écrire sur la distinction entre langues nominatif-accusatif et langues absolutif-ergatif (et le rapport avec la programmation orientée objet : à votre avis, le Java est-il plutôt nominatif-accusatif ou absolutif-ergatif ?).
  • Un peu de phonétique : quelques réflexions (elles aussi à 0.02¤) sur les voyelles cardinales et la précision de leur définition (notamment les secondaires). [Fait : 2013-05-06#2138] Il faudrait que je m'enregistre les prononçant, d'ailleurs, pour comparer à l'enregistrement pourri de Daniel Jones qui fait référence.

Bon, décidément, rien que raconter ce dont je voudrais parler prend déjà énormément de temps, donc je vais m'arrêter là. N'hésitez pas à me dire ce qui vous intéresse le plus, ou le moins, dans cette liste : je promets d'ignorer vos avis avec le plus grand soin.

Comme la dernière fois, j'essaierai de penser à éditer cette entrée pour mettre les liens vers les endroits où j'aurai parlé des choses en question, si tant est que je finisse par le faire un jour.

(mardi)

Faut-il avoir peur du Conseil constitutionnel ?

Maintenant que la loi sur le « mariage pour tous » a été définitivement votée par le parlement, ce dont je me réjouis même si je réitère le fait que j'aurais préféré une loi mettant fin à toute notion légale de sexe, elle doit encore — suite à un recours de l'opposition — être examinée par le Conseil constitutionnel avant de pouvoir être promulguée.

Faut-il avoir peur qu'il la déclare non conforme à la Constitution ? Probablement pas. D'une part, une décision antérieure de ce même Conseil traduit assez clairement — même pour le non-juriste que je suis — le fait que c'est au législateur de définir les contours du mariage :

5. Considérant qu'aux termes de l'article 34 de la Constitution, la loi fixe les règles concernant l'état et la capacité des personnes, les régimes matrimoniaux, les successions et libéralités ; qu'il est à tout moment loisible au législateur, statuant dans le domaine de sa compétence, d'adopter des dispositions nouvelles dont il lui appartient d'apprécier l'opportunité et de modifier des textes antérieurs ou d'abroger ceux-ci en leur substituant, le cas échéant, d'autres dispositions, dès lors que, dans l'exercice de ce pouvoir, il ne prive pas de garanties légales des exigences de caractère constitutionnel ; que l'article 61-1 de la Constitution, à l'instar de l'article 61, ne confère pas au Conseil constitutionnel un pouvoir général d'appréciation et de décision de même nature que celui du Parlement ; que cet article lui donne seulement compétence pour se prononcer sur la conformité d'une disposition législative aux droits et libertés que la Constitution garantit ; […]

9. Considérant, d'autre part, […] qu'en maintenant le principe selon lequel le mariage est l'union d'un homme et d'une femme, le législateur a, dans l'exercice de la compétence que lui attribue l'article 34 de la Constitution, estimé que la différence de situation entre les couples de même sexe et les couples composés d'un homme et d'une femme peut justifier une différence de traitement quant aux règles du droit de la famille ; qu'il n'appartient pas au Conseil constitutionnel de substituer son appréciation à celle du législateur sur la prise en compte, en cette matière, de cette différence de situation […].

Il semble assez clair que la décision eût été rédigée différemment si elle eût voulu dire le mariage ne peut être qu'entre un homme et une femme, point final. Et même, le président du Conseil constitutionnel Jean-Louis Debré est passé à la télé il y a quelques mois (je crois que c'était sur Canal+, probablement dans le Grand Journal) et, dans un écart inhabituel à sa réserve coutumière, a rappelé que c'était bien dans le pouvoir d'appréciation du législateur de définir ce qu'est un mariage. D'autre part, si j'imagine qu'il doit y avoir des personnalités assez conservatrices au Conseil constitutionnel pour ne pas trouver bon que deux garçons ou deux filles puissent s'unir, je doute qu'il y en ait une majorité pour être à ce point réactionnaires qu'ils seraient la première cour constitutionnelle du monde à imposer une inégalité de droit en la matière quand un certain nombre d'autres cours ont fait exactement le contraire. Enfin, ils ont certainement conscience que ce serait perçu comme une forme de coup d'État dont l'autorité morale du Conseil ressortirait trop diminuée s'ils prenaient une décision aussi politique : c'est le raisonnement qui a peut-être convaincu John Roberts (chef de la Cour suprême des États-Unis) de voter contre son groupe habituel et ainsi sauver la loi d'Obama sur l'assurance maladie.

Bref, je ne crains pas trop sérieusement qu'ils invalident le texte en totalité et sur le fond. Je crains cependant deux choses : soit qu'ils déclarent anticonstitutionnelle une provision importante, par exemple toutes les dispositions concernant l'adoption ; soit qu'ils invalident la loi pour une raison technique, c'est-à-dire une situation qui permettrait en principe au législateur de la voter de nouveau une fois corrigé ce problème technique, mais qui en pratique obligerait à retraverser tout ce marathon législatif, avec nouvelles manifs et actes homophobes à la clé, et qui risquerait bien d'enterrer définitivement le texte. Or ça ne me semble pas du tout invraisemblable qu'on découvre que l'avis du Conseil d'État a été demandé sur un texte qui diffère par trois virgules essentielles du projet de Loi déposé au bureau de l'Assemblée nationale, ou que cet avis a été demandé sur un papier de la mauvaise couleur, et que par conséquent toute la procédure était viciée.

Mise à jour : En fait (2013-05-17), ils ont tout validé avec seulement une réserve.

Ma conception de la démocratie fait que je ne vois pas d'un mauvais œil l'existence du Conseil constitutionnel et le fait qu'il ait un rôle accru et le pouvoir de défendre les libertés fondamentales, mais il faut reconnaître qu'il y a un véritable problème de transparence, d'impartialité et de démocratie avec cette institution :

  1. dans son processus de nomination et dans le fait qu'il soit aussi restreint : à la limite, le fait que les anciens présidents en soient membre à vie ne me choque pas tant que ça, mais il devrait y avoir des membres nommés par exemple par le Premier président de la Cour de Cassation et par le vice-président du Conseil d'État pour faire contrepoids aux nominations potentiellement « politiques » ;
  2. dans le fait que des décisions qui concernent l'ensemble du pays ne soient pas plaidées et qu'il n'y ait comme seul argumentaire, en cas de contrôle de constitutionnalité avant promulgation, que le texte de la saisine (donc pas de contradictoire et personne pour défendre la loi, et pas non plus d'audition d'amici curiæ) ;
  3. dans le fait que les décisions sont écrites dans un langage particulièrement difficile à décoder, et que même si elles sont maintenant souvent accompagnées d'un commentaire semi-officiel publié sur le site Web du Conseil, on ne sait pas très bien quel est le statut et la diffusion de ce dossier (je note par exemple que leurs URL ne sont pas pérennes…) ;
  4. dans l'absence de publication d'avis dissidents et l'opacité totale des votes ;
  5. dans l'absence d'aucun moyen (autre qu'une réforme constitutionnelle…) pour révoquer un membre du Conseil qui serait coupable de graves manquements à ses devoirs (pour comparaison, les juges de la Cour suprême des États-Unis peuvent au moins être mis en impeachement par le Congrès).

Il ne faudrait pas arriver à ce que le Conseil devienne un verrou.

(dimanche)

Promenons-nous dans les bois pendant que la foule n'y est pas

J'habite Paris depuis environ quinze ans, et je crois que je n'avais jamais mis les pieds au bois de Boulogne pendant tout ce temps et seulement une seule fois au bois de Vincennes ; et j'y étais peut-être allé occasionnellement avant d'être vraiment parisien, mais ça doit se compter sur les doigts d'une main. (Si ce n'est que j'avais passé les écrits du concours des ENS dans le parc floral du bois de Vincennes.) Ces endroits restaient donc pour moi des régions un peu mystérieuses dans le grand plan cadastral de Paris que j'ai accroché au mur de ma chambre.

[Un paon faisant la roue dans le parc de Bagatelle]Ce week-end j'ai décidé de combler un peu cette ignorance. Du coup, samedi après-midi, mon poussinet et moi avons fait un tour au bois de Boulogne, reliant la porte Dauphine à la commune éponyme ; et aujourd'hui je me suis promené dans le bois de Vincennes (cette fois sans mon poussinet, qui a préféré les charmes de notre jardin), entre porte Dorée et Nogent-sur-Marne. L'exploration n'a pas été très systématique parce que nous avons réussi à passer complètement à côté des lacs du bois de Boulogne ; et en faisant un tour du parc de Bagatelle, nous y avons raté la roseraie (en revanche, nous y avons vu successivement le belvédère, l'orangerie, le trianon, la petite cascade, plusieurs couples de paons, et un nombre impressionnant de chats).

Le contraste entre les deux promenades était vraiment étonnante, et je ne sais pas si elle est due à une différence entre les bois, entre les jours (samedi versus dimanche) ou autre chose : parce que samedi au bois de Boulogne il n'y avait vraiment pas grand-monde, même à Bagatelle, alors que dimanche au bois de Vincennes j'avais l'impression que tout Paris s'était donné rendez-vous là (le pire étant le lac Daumesnil, dont les îles, et même la surface à cause des barques et pédalos, étaient à peine moins bondées que les rives ; mais le lac des Minimes était lui aussi très populaire). La météo était pourtant à peu près la même ces deux jours. Je penche plutôt pour l'explication concernant le jour : la promenade dominicale en famille — et avec le chien — semble plus prisée que la promenade sabbatique.

Mais même en faisant abstraction de la foule, le bois de Vincennes m'a semblé beaucoup moins intéressant : partout le même sous-bois uniforme (ce n'est pas vraiment ce que j'appelle une forêt), beaucoup d'allées droites sans grand intérêt, des équipements sportifs qui prennent trop de place, bref, il m'a semblé qu'il y avait plus de variété au bois de Boulogne. Mais peut-être est-ce simplement le hasard d'où m'ont porté mes pas.

Et en tout état de cause, je continue à préférer la végétation de la vallée de Chevreuse.

PS : J'attends de mes lecteurs un peu plus de subtilité que les clichés sur les prostituées auxquels on semble avoir droit dès qu'on mentionne les bois parisiens. (Ceci dit, peut-être que la mauvaise réputation du bois de Boulogne expliquerait que les familles préfèrent emmener promener leurs gosses de l'autre côté de Paris ?)

(lundi)

Pourquoi je n'aime pas aller chez le coiffeur

J'ai tendance à aller chez le coiffeur une fois tous les six mois (voire plus), à me faire couper les cheveux très courts, et à les laisser pousser entre temps. Les gens s'imaginent que j'aime avoir les cheveux longs, ce qui n'est pas spécialement le cas (à la rigueur, peut-être que mon poussinet aime que j'aie les cheveux longs), et même, ils m'agacent rapidement à me tomber dans les yeux ou dans la bouche : c'est juste que j'ai la flemme d'aller chez le coiffeur.

Il y a une raison idiote qui me retient souvent, c'est que je prends un shampooing tous les matins, et ensuite je me dis ce serait idiot d'aller chez le coiffeur maintenant, il va me refaire un shampooing, attendons plutôt demain, je n'en prendrai pas, et le lendemain, évidemment, j'oublie, et ceci peut recommencer indéfiniment.

Une autre raison plus sérieuse est que j'ai toujours un mal fou à expliquer au coiffeur ce que je veux. D'une part, quand je dis que je veux qu'on me coupe les cheveux courts, c'est vraiment court, à la tondeuse, coupe militaire même, mais les coiffeurs, soit parce qu'ils s'imaginent que parce que j'avais les cheveux longs je veux les garder comme ça et que du coup je donne à court un sens très relatif, soit parce qu'ils veulent que je revienne le plus vite possible, se laissent vraiment prier. D'autre part, je ne sais pas comment désigner la coupe, parce que de toute façon mes cheveux décident eux-mêmes comment ils se mettent, la seule chose qu'on peut leur imposer c'est leur longueur, pour le reste ils sont tellement fins et souples qu'on ne peut pas les fixer.

[Photo de moi avec cheveux courts]Enfin, bon, cette fois il semble que j'aie réussi à me faire comprendre et à obtenir d'avoir les cheveux quasiment rasés sur les côtés et à l'arrière, et vraiment courts sur le dessus. Ci-contre une photo toute pourrie prise en vitesse avec la webcam de mon nouveau portable — histoire aussi de vérifier qu'elle marchait — juste en sortant de chez le coiffeur (vendredi en fin d'après-midi). Photo prise au Daily Monop' de la rue des Archives, un des endroits où j'aime bien me poser pour travailler quand je veux changer de mon bureau.

(mardi)

Popularité post mortem

À la cérémonie donnée le 12 novembre 1970 à Notre-Dame de Paris en la mémoire de De Gaulle ont assisté, entre autres, le président des États-Unis Richard Nixon et son conseiller Henry Kissinger et le sénateur Ted Kennedy, le président de l'URSS Nikolaj Podgornyj, le Premier ministre anglais Edward Heath et ses prédécesseurs Harold Wilson, Anthony Eden (Lord Avon) et Harold Macmillan, le Premier ministre indien Madame Indira Gandhi, le président de la RFA Gustav Heinemann et les anciens chanceliers Ludwig Ehrard et Kurt Kiesinger, le président italien Giuseppe Saragat et son Premier ministre Emilio Colombo, le président d'Israël Zalman Shazar et l'ancien Premier ministre David Ben Gourion, le roi des Belges Baudouin, la reine Juliana des Pays-Bas, l'empereur d'Éthiopie Haïlé Sélassié, le shah d'Iran Reza Pahlavi, le futur roi d'Espagne Juan Carlos — et il ne s'agit là que des délégations officielles, donc sans compter d'autres célébrités comme l'actrice Marlene Dietrich.

Il est probable que les funérailles de Winston Churchill en 1965 avaient attiré encore plus de beau monde, mais je n'arrive pas à en trouver une liste : c'est dommage, les deux hommes n'auraient peut-être pas rechigné à cette comparaison de popularité post mortem (ceci étant, comme on dit, même les meilleurs amis du monde ne peuvent pas assister à l'enterrement l'un de l'autre). Les funérailles de JFK n'étaient pas mal non plus, et cette fois on trouve facilement la liste exacte.

Je ne sais pas vraiment si cette façon de réunir le gratin du Gotha continue à se faire. L'enterrement de Mme Thatcher ne va pas vraiment donner une idée à ce sujet par ce qu'il s'agit de quelqu'un qui, disons, ne faisait — ahem — pas l'unanimité. Il y a d'autres personnes dont je suis curieux de savoir quel beau monde il y aura à leur enterrement (pas que je sois pressé qu'il arrive !) : Jimmy Carter, Mihail Gorbačëv, l'actuelle reine du Royaume-Uni… mais il faut dire que les personnes à la fois très connues mondialement et suffisamment consensuelles sont plutôt rares. Et la renommée ne survit pas forcément aussi longtemps que la personne qui la porte : Kofi Annan est encore célèbre aujourd'hui, mais je lui souhaite comme aux autres de vivre vieux, et quand il aura 90 ans on l'aura peut-être oublié comme je pense que beaucoup de gens ne savent plus qui est Javier Pérez de Cuéllar.

Il y a cependant une personne au monde dont je suis certain qu'elle a à la fois une renommée et une consensualité(?) telles que toute la planète, qui déjà s'émeut de sa santé et espère qu'il vivra centenaire, se pressera quand il s'agira de se montrer à ses funérailles — c'est Nelson Mandela.

(lundi)

Le choix de la troisième langue des annonces

Beaucoup d'annonces dans les transports en commun ou dans d'autres lieux publics à Paris sont faites en trois langues (parfois même plus) : en français évidemment, en anglais, et dans une troisième langue. (Je crois vaguement me rappeler qu'il y a une règle assez absurde qui impose ça, au moins dans certains contextes : on ne peut pas traduire dans une seule langue étrangère, il en faut au moins deux.) Ce qui est considérablement plus mystérieux, c'est la logique qui préside au choix de cette troisième langue, qui est souvent soit l'allemand soit l'italien soit l'espagnol ; parfois c'est le japonais (ou parfois le japonais est une quatrième langue).

Les annonces de la ligne 5 parisienne avertissant des stations en courbe (Attention à la marche en descendant du train) sont aussi faites en anglais (Please mind the gap between the train and the platform) et en allemand (Achten Sie auf den Abstand zwischen Zug und Bahnsteigkante), mais on me souffle que sur la ligne 4 la troisième langue est l'espagnol et que sur la 3 c'est l'italien. Sur la ligne 14, le message indiquant qu'à la station Gare de Lyon la descente se fait à gauche était autrefois prononcé en français, anglais et espagnol, et maintenant l'espagnol a été remplacé par de l'italien. Y a-t-il la moindre logique à ces choix ou est-ce le hasard du traducteur qui était disponible le jour où ces annonces étaient enregistrées ? Je pourrais imaginer, et trouverais sans doute utile, que la RATP ou le ministère du tourisme fasse une étude pour déterminer quel ensemble de trois ou quatre langues permet de se faire comprendre du plus grand nombre d'usagers : je trouve assez crédible que le résultat soit l'un des ensembles effectivement utilisés (encore que je peux en imaginer d'autres qui soient au moins plausibles), mais j'ai du mal à croire que ça diffère sérieusement d'une ligne à une autre.

Par ailleurs, ce choix de langues vise manifestement les touristes. Il est probable que ce soient, en effet, les plus nombreux non-francophones à Paris, mais je serais curieux de savoir quelles langues il faudrait choisir, en plus du français, pour être compréhensible par un maximum de personnes habitant l'Île-de-France (arabe algérien ? chinois mandarin ? portugais ? tamoul ? berbère ? soninké ? bambara ? persan ? turc ?). Je me rappelle avoir remarqué que quand on appelle le SAMU social, le message d'accueil est dit en différentes langues, je ne sais plus exactement lesquelles, mais il me semble me rappeler qu'il y a le russe dedans : j'imagine que cela relève d'un calcul de ce genre.

(vendredi)

Pourquoi je ne crois pas à l'ultrafinitisme

(Je développe ici quelque chose que j'ai écrit en commentaire sur une entrée du blog de David Monniaux sur l'épistémologie des mathématiques.)

Le finitisme en philosophie des mathématiques est l'idée que l'infini n'existe pas (avec différentes variations possibles selon ce qu'on entend au juste par n'existe pas), i.e., que seuls les objets finis — les entiers naturels ou ce qui peut se coder avec eux, comme les structures combinatoires finies — ont vraiment un sens. Disons qu'il s'agit d'une position qui met une limite sur le platonisme (cf. ce que j'en disais ici) qui postule que les objets mathématiques existent dans une sorte de paradis platonicien : le finitisme n'admet dans ce paradis que les entiers naturels et les structures finies. Cette position est illustrée par une phrase de Kronecker que j'ai déjà mainte fois citée : Die ganzen Zahlen hat der liebe Gott gemacht, alles andere ist Menschenwerk (Les entiers ont été faits par Dieu, tout le reste est l'œuvre de l'homme).

L'ultrafinitisme va plus loin en rejetant non seulement l'infini mais même les nombres absurdement grands comme ceux que je décris dans cette entrée (ou même des nombres beaucoup plus petits qu'eux). Pour un ultrafinitiste, se demander, par exemple, si le 10↑(10↑(10↑100))-ième nombre premier se termine par 1, 3, 7 ou 9, est une question à peu près dénuée de sens.

Évidemment, il est parfaitement sot de penser qu'il existe un plus grand entier naturel, auquel on ne peut pas ajouter 1 : ce serait là une caricature de la position ultrafinitiste. Ceux qui se revendiquent de cette idée pensent plutôt que les nombres ont de moins en moins de sens au fur et à mesure qu'ils grandissent, si bien que 100 existe certainement mais que 10↑(10↑(10↑100)) n'a à peu près aucun sens. Je ne sais plus où j'avais entendu cette anecdote de quelqu'un qui a voulu mettre en défaut un ultrafinitiste en essayant de trouver le plus grand nombre dont ce dernier reconnaîtrait l'existence : il a commencé par lui demander si 1000 existait, puis un million (10↑6), puis un milliard (10↑9), puis un gogol (10↑100), etc. La raison pour laquelle ce plan n'a pas marché est que l'ultrafinitiste a toujours répondu « oui », mais en réfléchissant de plus en plus longtemps à mesure que le nombre était grand : il a répondu presque instantanément qu'un milliard existait, mais il a mis une seconde à déclarer qu'un gogol existait, peut-être 10 secondes pour 10↑1000, et n'a jamais consenti à admettre que 10↑(10↑100) existât. Voilà qui devrait donner une meilleure idée de cette philosophie ; et globalement, on peut imaginer qu'un ultrafinitiste typique reconnaîtra l'existence d'un nombre dans un temps, ou avec une difficulté, proportionnel à ce qu'il faut pour l'écrire complètement — disons, en base 10 — sans artifice comme les exponentielles, c'est-à-dire, proportionnellement à son log. Cela correspond assez bien à l'usage qu'on fait des nombres ailleurs qu'en mathématiques, finalement.

L'ultrafinitisme, du coup, n'admet pas forcément que l'arithmétique de Peano, ou que ZFC, soient consistants. En fait, il n'admet même pas que la question ait un sens (la démonstration d'une contradiction pourrait être démesurément longue) : mais il constate certainement qu'aucune contradiction n'est connue dans ces systèmes, et admet peut-être, ou peut-être pas, qu'on pourrait raisonnablement en trouver une. De fait, il y a des gens qui cherchent à trouver, ou espèrent sérieusement qu'on trouve, une contradiction dans ces systèmes. (Voir notamment cette entrée passée.)

C'est là que je trouve que la position ne tient pas vraiment debout. Car de toute évidence les ultrafinitistes acceptent les conclusions arithmétiques de Peano (ou même de ZFC, mais ça ne fait guère de différence ici) concernant les entiers qu'ils considèrent comme raisonnables : si on considère les mathématiques comme une science expérimentale, on peut même dire qu'on dispose d'une quantité faramineuse de confirmation expérimentale de son cadre (à chaque fois qu'on paie quelque chose, on vérifie la commutativité et l'associativité de l'addition, et n'importe quel calcul sur ordinateur vérifie expérimentalement des quantités énormes de théorèmes mathématiques), et en tout cas, je vois mal comment on peut être un mathématicien si on ne croit pas un mininum aux théorèmes que l'on démontre. Et je ne vois rien dans la position ultrafinitiste qui permette d'expliquer ceci : comment expliquer que Peano (ou ZFC) fasse des prévisions si justes ? comment se fait-il qu'on n'arrive pas, au moins en pratique, à y trouver une contradiction ? Ou, pour dire les choses autrement : comment se fait-il, si les objets infinis ou même les très grands nombres n'existent pas, qu'ils donnent l'illusion d'exister ? Comment se fait-il que le monde mathématique se comporte comme s'ils existaient ?

Un platoniste pur jus n'aura pas de difficulté à expliquer que Peano soit consistant : si les entiers naturels existent et sont bien définis, il est normal qu'ils se comportent ainsi, il n'y a pas de contradiction dans Peano tout simplement car Peano est vrai. ((S'agissant de ZFC, ma position à moi a tendance à être que les ensembles existent sans être uniques : il s'agit de la position « multivers » où il n'existe pas un univers privilégié de la théorie des ensembles, mais le fait qu'il en existe au moins un fait que ZFC doit être consistant.))

La position ultrafinitiste en mathématiques me paraît semblable à celle de quelqu'un qui prétendrait que les galaxies lointaines que nous voyons dans le ciel nocturne n'existent pas : comme nous ne pouvons pas raisonnablement les atteindre, nous n'en avons qu'une image, qui pourrait être une illusion. Il n'y a pas forcément besoin pour cela de croire que l'Univers aurait une frontière bien nette comme il n'y a pas besoin pour être ultrafinitiste de croire qu'il existe un plus grand entier naturel. Néanmoins, il me semble beaucoup plus simple de penser que ces objets lointains et inatteignables (qu'il s'agisse des autres galaxies ou des très grands nombres) existent vraiment que de croire que, sans exister, ils parviennent à laisser une image dans notre expérience qui suggère qu'ils existent.

(vendredi)

Acer Aspire One725

Comme promis, je dis un petit mot du nouveau portable que je me suis acheté lors de mon week-end à Londres pour remplacer mon Eee PC devenu trop lent : il s'agit d'un Acer Aspire One725, que j'ai acheté pour 250£, c'est-à-dire un peu moins de 300€, (au Currys PC World de Tottenham Court Road). Avec un clavier QWERTY (GB, mais que je configure comme US), donc, puisque tel était le but d'aller l'acheter en Angleterre.

Le prix est la principale chose qui le rend attractif : en choisissant quelque chose d'aussi bon marché, je ne m'attendais certainement pas à quoi que ce soit d'extraordinaire, et, de fait, il ne l'est pas. Il est néanmoins correct.

Parmi les choses que j'apprécie en tout cas, il y a le poids : avec 1.20kg, il fait quasiment le même poids que mon précédent Eee PC (1.14kg), alors qu'il est nettement plus grand (11.6″ de diagonale d'écran contre 8.9″) : ceci donne l'impression d'une très grande légèreté, et comme l'idée est de l'avoir toujours dans mon sac, c'est éminemment appréciable.

L'écran, de résolution 1366×768 pour une diagonale de 11.6″ (ce qui fait 135dpi) est de bonne qualité, ou plutôt, serait de bonne qualité si je n'avais pas deux pixels morts, ce qui gâche beaucoup les choses. Heureusement, ils sont tous les deux (un rouge et un noir) sur l'extrême bord droit, donc ce n'est pas totalement insupportable, mais j'en suis néanmoins très fâché : j'aurais préféré une résolution bien moindre, et/ou une taille d'écran bien moindre, pour avoir quelque chose que les fabricants sachent correctement contrôler ! À part ça, le chipset graphique est un Radeon HD 6xxx (6290 ou 6250, je ne sais pas exactement, et je ne sais pas s'il y a vraiment une différence), donc aussi bien supporté par Linux qu'on peut l'espérer — un de mes buts était d'éviter certains chipsets Intel communs qui ne le sont que très mal.

Le toucher du clavier n'est pas mauvais, et il est en tout cas assez silencieux. La disposition des touches n'est pas idéale (touche entrée disposée verticalement, avec la touche backslash — enfin, dièse sur le QWERTY-GB — placée à sa gauche plutôt qu'au-dessus), et je n'aime pas trop le pavé de flèches, mais c'est une question d'habitude. Le touchpad est très confortable.

Le processeur, un AMD C70 (double cœur, 1GHz) est correct. Il a l'avantage sur celui que j'avais dans mon Eee PC de pouvoir fonctionner en 64-bits. Il aurait aussi l'avantage d'avoir de fournir la virtualisation si les salopards qui ont écrit mon BIOS ne l'avaient pas désactivée[#], ce qui me donne un peu des envies de meurtre. La RAM est de 2Go, ce qui est le double de ce que j'avais sur mon Eee PC (en fait, pas exactement, parce que la mémoire graphique mange dessus) donc, même si ce n'est pas gigantesque, c'est un progrès.

Le disque dur fait 320Go, ce dont je n'ai que faire : j'avais tout à fait assez des (16+4)Go de mon Eee PC. Mais la différence essentielle est que maintenant il s'agit d'un vrai disque dur, pas d'un SSD. L'avantage est qu'il ne connaîtra pas le phénomène de ralentissement qui m'a forcé à changer ; l'inconvénient est que j'ai maintenant peur de le casser, et j'ose à peine le bouger alors que je savais que mon Eee PC ne craignait rien. Comme, de nouveau, l'idée est de l'avoir toujours dans mon sac, c'est nettement plus problématique.

Globalement, la machine me donne l'impression d'être certes beaucoup plus rapide que mon précédent ultraportable à l'agonie, mais néanmoins pas franchement hyper-rapide. (Il faut dire que je m'obstine à utiliser Ubuntu, qui lance un nombre incroyable de choses qui ne servent à rien au démarrage, mais bon, je ne vais pas parler ici de mes innombrables griefs contre toutes les distributions Linux possibles.)

Le port Ethernet est de 100Mbps, ce qui est franchement décevant en 2013, mais pour l'usage que je vais en faire ça suffira. Le chipset Wifi est un Atheros, donc très bien géré par Linux, et comme je n'utilise que du Wifi 802.11g le fait qu'il sache aussi faire du 802.11n ne m'intéresse pas. Contrairement à mon Eee PC, il n'a pas de Bluetooth, ce qui est aussi un peu décevant, mais je n'en ai pas vraiment usage (quand je fais du tethering avec mon téléphone, c'est par USB et je garde toujours dans mon sac un câble à cet effet). Il semble que j'aie un port USB 3.0, ce dont je n'ai que faire parce que je ne sais même pas vraiment ce que ça veut dire, et j'ai aussi un port HDMI dont je n'ai pas plus usage. J'ai un lecteur de cartes mémoire, ce qui pourrait s'avérer utile, mais je n'ai pas testé si Linux sait l'utiliser.

L'autonomie est plutôt décevante : les tests que j'ai vus en ligne en sont plutôt contents, mais personnellement j'ai mesuré autour de 3 heures dans l'usage que j'en fais, ce qui n'est franchement pas impressionnant ; en fait, c'est à peine plus que ce qu'avait mon Eee PC une fois sa batterie bien vieillie, et donc vraiment beaucoup moins que ce qu'il avait initialement. Bon, il est vrai que mon test n'a pas été très poussé, je n'ai pas cherché à désactiver ce qui consomme de l'énergie, et surtout il alimentait mon téléphone par USB (puisque je faisais du tethering), donc il y a certainement moyen de monter au-dessus de 3h.

La machine était vendue avec Windows 8 préinstallé, que mon premier soin a été d'effacer soigneusement (j'aurais un certain agacement à avoir payé pour cette horreur, mais on m'a soufflé qu'en fait différents logiciels plus ou moins publicitaires qui accompagnent le bouzin servent typiquement à le payer sur ce genre de machines). À cause de ça, la machine a un BIOS UEFI, ce qui me faisait un peu peur a priori (il y a eu des critiques contre Microsoft qui aurait poussé à des standards rendant difficile l'installation de Linux), mais en fait ça ne m'a causé aucune difficulté : primo on peut désactiver le mode UEFI pour revenir en mode historique, secundo même en mode UEFI on peut désactiver le mode « sûr » (c'est-à-dire dans lequel il vérifie la signature cryptographique du code de démarrage), et tertio il est extrêmement facile dans le BIOS d'autoriser l'exécution de nouveaux blocs de démarrage : la machine n'est donc absolument pas verrouillée sous Windows, et je n'ai pas de raison supplémentaire (je veux dire, à part pour avoir désactivé la virtualisation dans le processeur) de détester les auteurs du BIOS.

On verra à l'usage, mais pour l'instant je n'ai ni l'impression d'avoir jeté mon argent par les fenêtres ni celle d'avoir fait une affaire exceptionnelle.

[#] On peut se demander, d'ailleurs, pourquoi le processeur permet que le BIOS désactive la virtualisation d'une manière irréversible (et pas, par exemple, l'unité flottante, ou le deuxième cœur, ou que sais-je encore). Je crois que l'idée à l'origine est une mesure de sécurité : on a pu avoir peur que des virus s'intercaleraient avant le système d'exploitation et feraient tourner celui-ci dans une machine virtuelle (dont ils seraient l'hyperviseur), ce qui les rendrait indétectables. Ce raisonnement est profondément crétin parce que la virtualisation n'apporte pas de fonctionnalité nouvelle à la machine — on peut tout faire purement en logiciel, et avec un compilateur just-in-time assez sioux on devrait perdre assez peu d'efficacité — mais ce ne serait pas la première fois que des gens auraient des idées saugrenues de la sorte. Après, dans mon cas, je suppose qu'il s'agit pour les fabricants de la machine de pouvoir vendre un modèle plus cher où la fonctionnalité ne serait pas désactivée par le BIOS. Malheureusement, à part désassembler le BIOS pour retrouver comment il calcule la clé de verrouillage, il n'y a pas grand-chose que je puisse faire.

(jeudi)

Pourquoi les rhumes me font-ils tant d'effet ?

Non seulement j'attrape énormément[#] de rhumes (cette fois c'est le troisième en trois mois — voir ici et — ce qui est tout de même assez exceptionnel même pour moi), mais en plus ils me font un effet terrible. En l'occurrence, il n'y a pas que le climat abominable de Londres, c'est mon poussinet qui me l'a refilé : sur lui, ça a juste causé une journée d'éternuements répétés et une petite fatigue et c'était fini ; alors que moi, je viens de me réveiller avec un mal de tête horrible, j'ai juste la force de consulter mes mails et de me traîner jusqu'à la pharmacie pour refaire provision de sérum physiologique, après quoi je vais sans doute passer la journée à dormir (ou en tout cas à ne rien faire — ce qui est un peu problématique vu que j'ai des millions de choses à faire, justement). Mais je voudrais bien une explication un peu scientifique à cette différence : mon système immunitaire est-il partiulièrement mauvais pour combattre les rhumes ? (et si c'est le cas, pourquoi ?), ou mauvais tout court ? ou est-ce qu'au contraire mon corps surréagit ? Et y a-t-il quoi que ce soit que je puisse faire à part souffrir et râler sur mon blog ?

((Ceci me fait penser qu'hier j'ai assisté à la triste scène d'une dame en train de se faire embobiner par un charlatan qui se présentait comme une sorte de guérisseur. Je ne sais pas au juste de quel mal physique ou psychique la dame souffrait, mais le discours du type en face, qui lui proposait de commencer par un cours de respiration — la première étape de sa série des trois B : Bien respirer, Bien manger, Bien vivre — pour la modeste somme de 150€ parce qu'il ne court pas après l'argent mais il est quand même docteur vous comprenez, qui lui promettait qu'elle serait une rebelle, mais une rebelle de l'action et pas une rebelle de la réaction, et qui était convaincu que il n'y a pas de hasard[#2], vous m'avez rencontré pour une raison, et moi je sais quelle est cette raison, faisait hurler toutes les sirènes dans ma tête. Je me suis un peu senti coupable de non-assistance à personne en danger de ne pas intervenir pour dénoncer toutes ces sornettes, mais j'ai un peu trop peur de la confrontation pour ça.))

[#] Ce qui a souvent conduit des gens à me soutenir que mes rhumes seraient en fait des allergies. (Je le mentionne, parce que je sens que sinon quelqu'un va dire exactement ça dans les commentaires.) Il est possible que je sois un peu allergique sans le savoir. Mais le fait que mes rhumes aient surtout lieu en hiver, qu'ils suivent une évolution claire et régulière (picotement à l'arrière-gorge → fatigue et nez bouché → toux), et surtout, que je puisse souvent identifier quelqu'un qui me l'a passé, plaide bien pour le fait qu'il s'agit d'infections.

[#2] J'étais à deux doigts d'écrire que la phrase le hasard n'existe pas est le signe infaillible du charlatan, et puis je me suis rappelé que j'avais récemment posté ceci. Ahem.

(mercredi)

Hollingsworth v. Perry

Hollingsworth v. Perry est une affaire actuellement en cours devant la Cour suprême des États-Unis et dont l'objet est de décider la constitutionnalité (vis-à-vis de la Constitution de l'Union et spécifiquement de son quatorzième amendement) d'une modification d'initiative populaire à la Constitution de l'État de Californie visant à resteindre le mariage à un homme et une femme (cette initiative faisant elle-même suite à — et ayant pour but d'annuler — une décision de la Cour suprême de l'État de Californie qui trouvait contraire aux clauses de non-discrimination de la Constitution de cet État de limiter le mariage aux couples hétérosexuels).

Le débat contradictoire a eu lieu hier devant la Cour suprême. On peut en trouver l'enregistrement[#] et la transcription ici : ce qui rend intéressantes les affaires devant la Cour suprême des États-Unis, c'est que non seulement elles sont importantes par le fond, mais les arguments vont vraiment à l'essentiel parce que le calendrier de la Cour est très chargé — en l'occurrence, cela tient en moins de 1h30 de débats tout à fait compréhensibles par le non-initié (il y a bien sûr aussi beaucoup de documents écrits annexes, mais il n'est pas nécessaire de les lire pour suivre les arguments).

Outre la question de fond, il y a deux sous-questions intéressantes qui se posent.

La première est procédurale : étant donné que l'État de Californie (i.e., ses représentants élus, et notamment son gouverneur) n'ont pas voulu défendre la réforme constitutionnelle devant les cours fédérales, qui a le droit de le faire ? La Cour suprême de l'État de Californie a jugé que les défenseurs de l'initiative populaire avaient ce droit, mais la question se pose de savoir si cette cour avait effectivement le droit de le décider, i.e., si l'État de Californie peut se faire représenter en justice par quelqu'un qui n'en est pas un représentant officiel (et qui n'est ni élu ni payé par l'État). Cette question est essentielle parce que si les plaignants (=défendant la proposition 8) n'ont pas intérêt à agir au sens de l'article III de la Constitution de l'Union, l'affaire ne sera pas décidée sur le fond — et il est possible que ça arrange tout le monde.

La deuxième question est de savoir dans quelle mesure la décision finale pourra, ou devra, s'appliquer à l'ensemble de l'Union ou seulement à la Californie. Autrement dit, doit-on trouver qu'il est contraire à la Constitution des États-Unis de limiter le droit pour deux personnes de même sexe de se marier (et à vrai dire, personne ne croit sérieusement que la Cour à majorité conservatrice ira dans ce sens), ou seulement, comme l'a fait la Californie, de leur retirer ce droit après le leur avoir trouvé. Mais surtout, ce qui embête les deux parties et les juges, et sur quoi ils passent beaucoup de temps à se gratter la tête, c'est le paradoxe suivant : si on construit l'argument selon lequel la Californie n'a aucune raison rationnelle pour interdire à des couples de même sexe le droit de se marier par le fait qu'elle leur accorde de toute manière des droits absolument équivalents au nom près, alors cela signifie que l'argument ne tiendrait pas dans un État moins protecteur, et donc qu'on trouverait plus normal de pratiquer beaucoup de discrimination que de n'en pratiquer qu'un peu (et donc, comme le juge Breyer le fait remarquer [p. 61–62 du transcript], si la Cour suprême décide que tout État qui accorde aux couples de même sexe un droit d'union civil doit leur accorder le droit de se marier, ceci risquerait d'encourager les États conservateurs à ne pas accorder de tels droits).

Bon, et puis il est toujours intéressant d'écouter Scalia (voir ce que j'en disais ailleurs) jouer au troll en demandant de façon faussement naïve à quel moment précis il serait devenu anticonstitutionnel de limiter le mariage à un homme et une femme, à quel moment la Constitution a été changée sans qu'on le prévienne. (Le vote de Scalia étant sur cette affaire aussi certain que la catholicité du pape, ce qu'il dit a surtout pour but de s'amuser aux dépens des avocats, je suppose.)

Quoi qu'il en soit, il sera intéressant de lire attentivement la décision finale de la Cour, surtout si elle va au-delà de déclarer que les plaignants n'ont pas intérêt à agir.

La question est encore compliquée par le fait que la Cour décide en même temps une autre affaire, United States v. Windsor, dont les débats ont eu lieu aujourd'hui (je n'ai pas eu le temps de lire/écouter) et qui concerne, elle, la constitutionnalité d'une loi fédérale qui prétend limiter la reconnaissance au niveau fédéral du mariage aux couples hétérosexuels : mais ceux qui espèrent que la Cour décidera que le Congrès n'a pas le pouvoir de décider pour les États comment ceux-ci définissent le mariage (et pour le coup, il n'est pas complètement impossible que Scalia soit du bon côté de la majorité !) ont du mal à espérer en même temps qu'elle interdise à la Californie de le faire. Deux affaires à suivre, donc.

[#] Il faut juste faire abstraction de la façon assez pénible qu'a Charles Cooper — l'avocat qui défend la proposition 8 — de bégayer et de demander tout le temps pardon. Je ne sais pas si c'est parce que c'est la première fois qu'il plaide devant la Cour suprême des États-Unis et qu'il est particulièrement impressionné, ou s'il est juste tout le temps comme ça, mais c'est assez horripilant.

(lundi)

Retour de Londres

Mon Poussinet et moi sommes rentrés hier soir d'un week-end à Londres (dont un des buts, en ce qui me concerne, était d'acheter un nouvel ultraportable, avec un clavier QWERTY GB, à défaut de QWERTY US, pour remplacer mon Eee PC devenu inutilisable — mais j'en parlerai dans une entrée suivante). Je n'y étais pas allé depuis douze ans (et j'ai eu l'occasion de me rendre compte que ma mémoire géographique est très étrangement sélective).

Le climat de la ville a fait honneur à sa réputation : il a fait un temps épouvantable, alternant entre pluie et neige, avec un vent glacial, sous un ciel sinistre, si bien que rentrer à Paris me fait l'impression d'arriver à Marseille.

Notre hôtel était luxueux (le Pullman St Pancras : c'était Papapoussinet qui payait), avec une vue imprenable sur la nouvelle British Library et la remarquable architecture de la gare de St Pancras. En-dehors de ça, il faut dire que le quartier est assez horrible, Euston Rd faisant partie d'une sorte d'autoroute qui entoure la zone centrale à circulation restreinte de Londres.

Nous avons aussi très bien mangé. Pas de la nourriture anglaise même si celle-ci peut tout à fait être bonne : quand j'étais petit et que mon père m'emmenait régulièrement à Londres, nous allions à chaque fois manger à Simpsons-in-the-Strand ; mais le week-end ils exigent le port de la cravate et je n'en ai pas. Mais entre le petit-déjeuner gargantuesque du Pullman, un excellent canard laqué sur Gerrard St (le cœur du Chinatown londonien) et un restaurant indien de Soho trouvé un peu par hasard mais qui s'est avéré hautement satisfaisant, nous n'avons pas eu à nous plaindre de ce côté-là.

(mercredi)

Méditations sur les regexps « étendues »

Je participe en ce moment à Télécom à un cours sur la théorie des langages : ce qui signifie notamment, pour ce qui est de la partie sur les langages rationnels, définir ce que c'est qu'une expression régulière, définir différentes sortes d'automates finis, et montrer le théorème de Kleene selon lequel la classe de langages reconnus par des automates finis et celle définie par les expressions régulières coïncident (et montrer comment, en pratique, on arrive à synthétiser l'automate fini reconnaissant une expression régulière donnée). Théoriquement, il n'y a aucun doute que cette classe des langages rationnels est à la fois très naturelle et très importante. Déjà à ce niveau-là les choses ne sont pas aussi évidentes qu'on pourrait le penser, voir par exemple la grosse expression régulière que j'avais produite qui définit les multiples de 7 écrits en base 10.

Mais en général, quand j'enseigne un sujet, j'aime bien en apprendre un peu plus que ce que j'enseigne. Et en l'occurrence, s'agissant des expressions régulières, essentiellement tous les moteurs d'expressions régulières qui existent ont des extensions par rapport aux expressions régulières mathématiques, de sorte qu'ils reconnaissent plus que la classe standard des langages rationnels. J'aimerais bien savoir s'il existe une étude théorique de ces extensions, et je m'agace un peu de ne rien trouver de satisfaisant.

L'extension la plus courante, ce sont les références arrière (backreferences) : par exemple, on peut écrire (a*)b\1b\1 reconnaît le langage formé de trois suites de ‘a’ de même longueur séparées à chaque fois par un seul ‘b’ (i.e., les anbanban), or ce langage n'est même pas définissable par une grammaire sans contexte comme on le montre facilement avec un lemme de pompage standard. A contrario, il semble intuitivement évident que le langage formé des anbn (c'est-à-dire un certain nombre de ‘a’ puis le même nombre de ‘b’), ou encore le langage des expressions bien-parenthésées, n'est pas définissable par une expression régulière-avec-références-arrière ; mais, je ne sais pas le montrer, parce que je n'ai aucun modèle théorique bien défini pour ces expressions (et aucun « lemme de pompage » qui irait avec).

À vrai dire, je ne suis pas sûr de savoir définir exactement la sémantique des références arrière dans tous les cas bizarres. Et pour commencer, les langages (ou moteurs de regexps) ne sont pas d'accord entre eux.

Par exemple, tout le monde est d'accord que (a?)b\1 est satisfaite exactement par b et aba. Mais qu'en est-il de (a)?b\1 : et spécifiquement, est-elle satisfaite par b ? La logique demande plutôt que non : comme il n'y a pas de ‘a’ avant le ‘b’, la possibilité suggérée par le ? n'a pas lieu, donc le groupage n'est pas fait et la référence arrière n'est pas définie (ce qui est différent de : définie à la chaîne vide, comme dans l'exemple précédente), si bien que le \1 refuse de matcher. C'est bien comme ça que se comporte Perl ainsi que GNU egrep ; en revanche, en JavaScript, /^(a)?b\1$/.test("b") renvoie true : apparemment c'est une idiosyncrasie du langage que les références arrière non définies puissent matcher la chaîne vide. Maintenant, qu'en est-il de ((a*)b)*c\2 ? elle est certainement satisfaite par abaabcaa (et dans JavaScript spécifiquement, par c, suivant la même logique que l'exemple précédent), mais devrait-elle matcher aussi aababcaa ? Là, tout le monde semble d'accord que non : il faut croire que des parenthèses placées dans une étoile de Kleene capturent la dernière des occurrences du groupe parenthésé (plutôt que, par exemple, n'importe lequel, de façon non-déterministe, ce qui m'aurait semblé plus logique — mais c'est sans doute plus complexe à implémenter).

Plus précisément, la logique est quelque chose comme ceci : les groupes de parenthèses sont numérotés d'après la position de la parenthèse ouvrante dans la regexp telle qu'elle est écrite, puis la chaîne vérifie la regexp lorsqu'il existe une manière de remplacer chaque référence arrière par la plus récente sous-chaîne capturée par une paire de parenthèses numérotées de la même manière qu'elle (étant entendu, en JavaScript spécifiquement, que si la capture n'est pas définie, la chaîne vide sera acceptée pour la référence arrière). Avec cette logique, ((a*)b)*c\2 est équivalent à (a*b)*(a*)bc\2 (sauf en JavaScript où il est équivalent à c|(a*b)*(a*)bc\2), ce qui explicite que c'est la dernière répétition du (a*) qui définit la valeur du \2. Remarquez qu'il est faux — contrairement à ce qu'on pourrait croire naïvement — que toutes les références arrière de même numéro désignent forcément la même sous-chaîne : ((a*)b\2c)*d\2 est satisfaite par abacaabaacdaa (tous les moteurs sont d'accord sur ce point) et le \2 a valu une fois a et deux fois aa.

Mais les moteurs ne sont pas d'accord sur les situations dans lesquelles une paire de parenthèse doit capturer une chaîne (et affecter la référence arrière correspondante). Pour illustrer ce fait subtil, on peut comparer l'expression régulière (X) ((a*)b)*c\2 (déjà évoquée, et dont je rappelle qu'elle n'est pas vérifiée par aababcaa) avec les deux suivantes : (YL) ((a*)b|(a*)b)*c\2 et (YR) ((a*)b|(a*)b)*c\3. Le comportement de GNU egrep est le suivant : (YL) et (YR) sont équivalentes, et sont toutes les deux vérifiées par aababcaa (contrairement à (X), donc) ; l'explication est la suivante : pour chaque groupe a*b, lorsque le moteur choisit de façon non-déterministe la branche gauche ou droite de l'alternative, il affecte \2 ou \3 selon la branche qu'il choisit, mais uniquement celui-ci, et au final il accepte une chaîne lorsqu'il y a moyen de choisir les branches de sorte que le \2 final coïncide avec une capture par le jeu de parenthèses correspondant — donc (YL) et (YR) reconnaissent toutes les chaînes dans lesquelles le nombre de ‘a’ suivant le ‘c’ est égal au nombre de ‘a’ précédant n'importe quel ‘b’. Perl, en revanche, n'est pas d'accord : pour lui, (YL) n'est pas vérifiée par aababcaa (pas plus que (X)) alors que (YR) l'est : la raison est que quand Perl choisit la branche droite, il désaffecte la capture (\2) éventuellement faite par la branche gauche précédente, pour retenir le fait que, cette fois, la branche gauche n'a pas été prise, mais quand il choisit la branche gauche, il ne touche pas à la capture faite par la branche droite précédente. Quant à JavaScript, il considère qu'aucune des regexps (X), (YL) ou (YR) n'est vérifiée par aababcaa : la raison est que JavaScript considère que chaque occurrences des parenthèses externes réaffecte toutes les captures (\2 et \3), y compris pour les branches qui ne sont pas prises.

Pour la même raison, Perl et JavaScript pensent que abbca ne satisfait pas ((a)?b)*c\2 alors que GNU egrep pense que si ; et GNU egrep et Perl pensent que abac vérifie ((a*)b|\2c)* mais pas abc alors que JavaScript pense exactement le contraire (et s'agissant de (\2c|(a*)b)*, Perl et JavaScript ne changent pas d'avis, mais GNU egrep signalent une erreur). Enfin, si on fait référence à un groupe de parenthèses dans lui-même, GNU egrep signale une erreur, JavaScript ne lui fait matcher que la chaîne vide (parce qu'il désaffecte immédiatement la référence arrière), et Perl lui donne la valeur précédente qu'avait ce même groupe (donc (a|b\1c)* est vérifié par abac en Perl). Ce qui un peu étrange, dans l'histoire, c'est surtout que PCREgrep semble avoir souvent le même comportement que GNU grep au lieu d'avoir celui de Perl.

Même dans le cadre des expressions avec références arrière, certains moteurs (Perl, Python, .NET) apportent plus de flexibilité en permettant de nommer explicitement les groupes de capture (y compris en donnant le même nom à deux groupes différents). Je ne pense pas vraiment que ceci permette de définir des langages qui ne seraient pas définissables sans cette fonctionnalité, mais ça ne me semble pas du tout évident, ni dans un sens ni dans l'autre.

Par ailleurs, certains moteurs d'expressions régulières, notamment de Perl, ajoutent une extension supplémentaire notable au pouvoir des expressions régulières : ce sont les motifs récursifs. La simple possibilité de rappeler un motif (comme dans (a*)b(?1), qui, contrairement à la référence arrière (a*)b\1, matche abaa et pas juste aabaa) n'apporte rien de nouveau en elle-même, mais elle devient très puissante si on l'utilise récursivement. Par exemple, (a(?1)b|) définit le langage formé des anbn dont j'ai signalé ci-dessus que je pense (même si je ne sais pas le prouver) qu'il n'est pas définissable avec simplement des références arrière : on peut ainsi écrire des « expressions régulières » pour les expressions bien-parenthésées et, sans doute, pour n'importe quel langage défini par une grammaire sans contexte (même si ce n'est pas totalement clair à cause des limitations sur la récursion). Le comportement est assez différent entre Perl et PCRE, parce que ce dernier ne sait pas faire de backtracking à l'intérieur du motif récursif, et Perl : alors que Perl voit bien que abbc vérifie (ab(?1)bc|b*), PCRE n'y arrive pas parce que le b* capture tous les ‘b’ et n'en laisse aucun pour bc.

Bref, ce serait bien d'étudier un petit peu tout ça sous l'angle mathématique, donner des définitions rigoureuses de ce que ces différents modèles d'expressions régulières permettent de faire, trouver ceux qui sont les plus naturels, et comparer la puissance des uns et des autres.

(mardi)

Pourquoi l'univers constructible de Gödel est important mathématiquement et philosophiquement

[J'ai écrit ce texte par tout petits bouts sur plusieurs mois. J'espère que le processus fragmenté de son écriture ne le rend pas trop brouillon !]

Introduction

De façon inexplicable, quand j'ai listé certains des objets mathématiques qui me fascinent, j'ai oublié de citer l'univers constructible de Gödel : la lecture de l'article Wikipédia à son sujet ne parlera sans doute pas beaucoup au profane, mais je voudrais rattraper mon oubli en essayant d'expliquer un peu de quoi il s'agit, parce que cet objet me semble non seulement fondamental et extrêmement élégant, mais même, dans un certain sens, on peut dire qu'il donne un sens à toutes les mathématiques (avec néanmoins une question philosophique fondamentale : est-ce vraiment le sens que nous voulons ou devrions leur donner ? c'est-à-dire, veut-on ou doit-on accepter l'axiome de constructibilité qui affirme que cet univers constructible est l'univers mathématique ?).

Si on me donne dix secondes pour dire un peu de quoi il s'agit à quelqu'un qui ne connaît rien aux mathématiques, je pense que je tenterais de résumer l'axiome de constructibilité à ce slogan philosophique dont, malheureusement, le côté percutant enlève beaucoup à la précision :

Il n'existe pas de vrai hasard.

Si, en revanche, je dois expliquer de quoi il s'agit à quelqu'un qui connaît un peu les mathématiques, je dirai la chose suivante : l'axiome de constructibilité généralise — et non seulement implique, mais même explique — deux postulats célèbres de la théorie des ensembles que sont l'axiome du choix et l'hypothèse (généralisée) du continu. L'axiome de constructibilité rend explicites et « naturels » des objets dont l'axiome du choix ne fait que postuler l'existence, et il apporte suffisamment d'information sur les parties de ℕ pour démontrer et éclairer l'hypothèse du continu (et plus généralement sur les parties de n'importe quel ensemble pour l'hypothèse généralisée du continu). L'axiome de constructibilité ordonne (et « déroule ») tout l'univers mathématiques selon les ordinaux et permet donc de répondre à un nombre étonnant de questions combinatoires autrement indécidables, dont la véracité de l'axiome du choix et de l'hypothèse du continu ne sont que deux exemples : ce qui ne veut pas dire, cependant, que nous devions forcément accepter ces réponses comme correctes.

Plan de cette entrée :

(mardi)

Cloud Atlas

J'ai vu Cloud Atlas dimanche matin, et j'ai énormément aimé. Il faut dire que je suis bon public pour les œuvres constituées d'histoires entrelacées qui s'imitent et se répondent les unes les autres (comment appeler ça ? des fugues narratives, peut-être ?), et malgré quelques clichés un peu fastidieux dans certaines de ces histoires, j'ai trouvé que l'ensemble était intelligemment construit, et surtout, extrêmement bien monté. Parce que ce n'était pas un défi facile à relever que de faire en sorte qu'on arrive à suivre six histoires simultanées, dès le premier visionnage, sans s'y perdre ; et aussi, que le suspens marche de façon sextuple. Je recommande donc ce film à ceux qui aiment, par exemple La Vie, mode d'emploi, ou Si par une nuit d'hiver un voyageur, le film The Hours ou le roman de Cunningham qui l'a inspiré, ou ceux qui auraient voulu pouvoir lire le roman ici résumé.

(dimanche)

Polices, et partages des ressources par haché

☞Commençons par le contexte.

Je me suis dit que j'aimerais changer la police avec laquelle ce blog s'affiche. Pour le moment, celle-ci doit varier énormément d'une personne à l'autre : actuellement, dans le CSS, je précise pour la police principale : font-family: Optima, "Zapf Humanist", Palatino, "Palatino Linotype", serif; — c'est-à-dire que le navigateur ira chercher, par ordre de préférence décroissante, des polices appelées Optima ou Zapf Humanist (c'est essentiellement la même), puis Palatino ou sa version Linotype (c'est quasiment impossible de savoir quels noms différents une police donnée peut prendre, malheureusement), ou, faute de quoi, la police sérif par défaut.

J'aime énormément la police Optima pour son compromis subtil entre sérif et sans-sérif, entre humanisme et modernité, entre sobriété et audace ; elle est malheureusement rarement disponible sur les PC, sauf sans doute sur les Mac ; à défaut, Palatino, du même concepteur, doit être beaucoup plus souvent installée puisque c'est une des polices PostScript standard, donc forcément distribuée (ou au moins un de ses clones comme URW Palladio L ou TeX Gyre Pagella — mais en fait je ne sais pas si les mécanismes de recherche de police vont automatiquement les sélectionner) sur essentiellement tous les systèmes du monde.

Maintenant, comme je fais un usage assez immodéré de caractères Unicode non-latin, il serait bien de trouver une police qui les contienne (il y a bien un Optima avec du cyrillique, mais essentiellement personne ne doit l'avoir). Histoire que СССР et CCCP apparaissent comme identiques. Par chance, il existe une police libre de bonne qualité, tout à fait dans le même esprit qu'Optima, et qui contient un répertoire passablement étendu de caractères Unicode (latin, phonétique, grec, cyrillique…) : il s'agit de la police Linux Biolinum (le nom est assez ridicule, il faut dire, et le mot Linux — un simple hommage — peut prêter à confusion et laisser croire à tort qu'elle ne fonctionne que sous ce système d'exploitation, mais à part ça c'est une très bonne police). Elle est la petite sœur de la police Linux Libertine, qui s'inspire, pour sa part, plutôt de la police Times de Stanley Morrison (mais de nouveau en couvrant une région d'Unicode beaucoup plus importante), et qui est très connue au moins pour une chose : c'est celle qui sert à écrire le logo de Wikipédia (voir ici pour plus d'informations).

Je pourrais juste modifier le CSS pour mettre "Linux Biolinum O" avant Optima. Ça changerait la police pour la plupart des utilisateurs de Linux, ou tous ceux qui ont installé Linux Biolinum sur leur ordi. Mais ce n'est pas furieusement intéressant : le but d'une police libre est tout de même que tout le monde puisse l'avoir !

Je pourrais bien sûr aussi distribuer la police au format WOFF, qui sert exactement à ça. Le tracas, c'est que cette police n'est pas toute petite (c'est le revers de la médaille du fait qu'elle couvre beaucoup de caractères Unicode) : si je dois servir, pour quasiment chaque personne qui consulte ma page, 374ko pour la police en caractères droits, plus encore à peu près autant pour les italiques, et encore autant pour le gras (et évidemment je vais vouloir changer aussi les autres polices de la page, pas juste la principale), ça commence à devenir lourd : pour le serveur d'une part, et pour l'utilisateur aussi (j'aime que mes pages Web restent assez légères et sans fioritures inutiles).

Pour certaines polices, Google fournit un service, les Google web fonts, par lequel ils servent eux-mêmes les polices et n'importe quelle page Web peut les utiliser (à condition d'accepter de rediriger tous leurs utilisateurs sur les serveurs de Google pour cette requête…), et surtout, les ressources sont ainsi partagées (un navigateur ne téléchargera qu'une fois chaque police, pas une fois par page qui les utilise). Malheureusement, beaucoup de ces polices sont de mauvaise qualité, et en tout cas, ni Linux Libertine ni Linux Biolinum n'y figurent.

☞J'en viens au point essentiel.

Pour ce genre de ressource partagées que plusieurs pages Web pourraient vouloir utiliser, il me semble que la solution serait non pas d'avoir un serveur commun comme Google web fonts (ou la Open Font Library ou que sais-je encore), mais plutôt de les partager par haché. Autrement dit, j'utiliserais un type d'URL spécial qui indiquerait au navigateur client : je dispose d'une ressource LinBiolinum_R.woff dont le sha256 est df706b9a3c8d79781684ea1bc348f63513f61e6121633625e8581b0d38339a07, et elle est disponible à telle adresse ; le navigateur vérifierait s'il possède déjà cette ressource (en utilisant le haché fourni) et, sinon, la récupérerait à l'adresse que je lui fournis, et vérifierait que le haché est le bon, après quoi il l'enregistrerait comme ressource partagée pour ce haché : si une autre page Web prétend utiliser une ressource de même haché, il n'y aura plus besoin de la télécharger de nouveau (bien sûr, le navigateur gérerait l'expiration des ressources selon ses propres règles, vraisemblablement en faisant des stats sur l'utilisation passée de chaque haché). L'intérêt de spécifier le haché est que ça n'a pas d'importance quelle page Web a fourni la ressource : si elle a le bon haché, c'est forcément la bonne.

Ce mécanisme semblerait extrêmement utile pour tout ce qui peut être une ressource partagée entre pages Web : j'ai pris l'exemple d'une police, mais ça pourrait aussi être une version de telle ou telle bibliothèque JavaScript (au pif, celle-ci), et peut-être même certaines icônes particulièrement courantes. Ce mécanisme évite que les pages Web aient à se concerter, ou à utiliser une ressource centrale, pour partager des données. Tout ce qu'il demande, c'est de créer un nouveau schéma d'URL qui préciserait simplement le haché puis une (voire plusieurs) adresses où on peut obtenir le contenu. (Évidemment, deux versions différentes de la même ressource ne seraient pas partagées, mais ce serait déjà un mécanisme de cache très précieux.)

En plus, la compatibilité ascendante avec les navigateurs ne disposant pas de ce mécanisme pourrait se faire avec un peu de code en JavaScript grâce à registerProtocolHandler() (que tous les navigateurs doivent supporter puisque ça fait partie du standard HTML, n'est-ce pas ? /air naïf).

Cela semble tellement évident et tellement utile que j'ai du mal à croire que ça n'existe pas déjà ! Qu'il n'y ait pas au moins un projet du W3C ou dans le cadre du HTML5 pour standardiser quelque chose du genre. Et pourtant, je ne trouve pas. (Le plus proche que je vois, ce sont les URL magnet, mais c'est vraiment pour faire du BitTorrent, ce n'est pas typiquement le genre de choses qu'on s'attend à ce qu'un navigateur gère spontanément.) Est-ce que je n'ai pas les yeux en face des trous ?

[Comme je m'attends certainement à ce qu'on me dise : ah, mais ça existe, et ça s'appelle <truc>, attendez-vous à ce que cette entrée soit mise à jour en conséquence.]

(samedi)

Les nombreux troubles de mon sommeil

Je suis hypocondriaque et donc, j'ai un sommeil d'hypocondriaque. Petite liste des choses qui m'empêchent de bien dormir et dont, si aucune n'est vraiment grave, l'accumulation n'est pas négligeable :

Chacun de ces points est plutôt mineur, et même quand on les met tous ensemble, je ne dors pas si mal que ça (en tout cas, il y a des gens qui sont beaucoup plus à plaindre que moi à ce chapitre), je m'endors relativement facilement, et s'il est vrai que je me réveille presque systématiquement pendant la nuit, lorsqu'il n'y a pas un réveil pour me perturber, je me rendors généralement assez bien, et la dernière partie de mes nuits, où je fais beaucoup de rêves, est vraiment agréable.

Je me demande, cependant, comment ça va évoluer en vieillissant, ou quand je tomberais malade : parce que des tracas mineurs un jour peuvent devenir beaucoup plus gênants combinés à d'autres circonstances.

Only the 20 most recent entries were included above. Continue to older entries.

Seules les 20 plus récentes entrées ont été incluses ici. Continuer à lire les entrées plus anciennes.