Vous êtes sur le blog de David Madore, qui, comme le
reste de ce site web, parle de tout et
de n'importe quoi (surtout de n'importe quoi, en fait),
des maths à
la moto et ma vie quotidienne, en passant
par les langues,
la politique,
la philo de comptoir, la géographie, et
beaucoup de râleries sur le fait que les ordinateurs ne marchent pas,
ainsi que d'occasionnels rappels du fait que
je préfère les garçons, et des
petites fictions volontairement fragmentaires que je publie sous le
nom collectif de fragments littéraires
gratuits. • Ce blog eut été bilingue à ses débuts (certaines
entrées étaient en anglais, d'autres en français, et quelques unes
traduites dans les deux langues) ; il est
maintenant presque exclusivement en
français, mais je ne m'interdis pas d'écrire en anglais à
l'occasion. • Pour naviguer, sachez que les entrées sont listées par
ordre chronologique inverse (i.e., la plus récente est en haut).
Cette page-ci rassemble les entrées publiées en
octobre 2023 : il y a aussi un tableau par
mois à la fin de cette page, et
un index de toutes les entrées.
Certaines de mes entrées sont rangées dans une ou plusieurs
« catégories » (indiqués à la fin de l'entrée elle-même), mais ce
système de rangement n'est pas très cohérent. Le permalien de chaque
entrée est dans la date, et il est aussi rappelé avant et après le
texte de l'entrée elle-même.
You are on David Madore's blog which, like the rest of this web
site, is about everything and
anything (mostly anything, really),
from math
to motorcycling and my daily life, but
also languages, politics,
amateur(ish) philosophy, geography, lots of
ranting about the fact that computers don't work, occasional reminders
of the fact that I prefer men, and
some voluntarily fragmentary fictions that I publish under the
collective name of gratuitous literary
fragments. • This blog used to be bilingual at its beginning
(some entries were in English, others in French, and a few translated
in both languages); it is now almost
exclusively in French, but I'm not ruling out writing English blog
entries in the future. • To navigate, note that the entries are listed
in reverse chronological order (i.e., the most recent is on top).
This page lists the entries published in
October 2023: there is also a table of months
at the end of this page, and
an index of all entries. Some
entries are classified into one or more “categories” (indicated at the
end of the entry itself), but this organization isn't very coherent.
The permalink of each entry is in its date, and it is also reproduced
before and after the text of the entry itself.
Digression préliminaire : Je ne suis pas un gros
consommateur de fictions (quel que soit le format : romans, films…)
pour une raison sur laquelle il faudra que je revienne plus longuement
dans un billet ultérieur, à savoir mon agacement devant la manie des
histoires qui ne finissent jamais, soit parce qu'elles font partie de
cycles interminables (pensez aux séries télé, enfin, maintenant il
s'agit plutôt de séries Internet), ou bien, même quand ce n'est pas le
cas à la conception ou d'ailleurs aussi quand c'est le cas, on trouve
toujours moyen de leur donner des suites tant que le public en
demande… si bien que je me sens trop souvent frustré de mon désir
de résolution. Je détaillerai peut-être un peu
ultérieurement dans une autre entrée, mais si je mentionne ce fait ici
c'est pour parler de bandes dessinées. Parce que mon agacement devant
les cycles qui ne terminent jamais n'est pas tout à fait le même
s'agissant de romans et de bédés : un cycle de quatorze romans de
800 pages chacun (I'm looking at you, Wheel of
Time) me rebute simplement parce que la vie est trop
courte, je suis déjà trop vieux, et j'ai trop d'autres trucs à faire
pour consacrer à ce genre de choses le temps et la patience qu'elles
requièrent ; mais s'agissant de bédés, le problème est surtout que je
trouve exaspérant d'attendre un an ou deux pour avoir le nouveau volet
du cycle que, au contraire du roman de 800 pages, je lirai en une
heure. (Et si j'attends que le cycle soit complet avant de le
commencer, en général le premier livre est déjà épuisé quand le
dernier paraît.) Bref : je ne suis jamais content, et je n'aime pas
les cycles.
Tout ce qui précède est là pour dire que ce qui m'a attiré dans la
bédé à laquelle je consacre ce billet, c'est que ce n'est pas
un petit bout d'un cycle, et c'est ce qui m'a décidé à l'acheter après
avoir passé pas mal de temps dans une librairie spécialisée en bédés à
reposer volume après volume étiqueté quelque chose comme volume 17
dans le Cycle des Chevaliers de la Tour du Temps.
C'est une histoire complète. (D'ailleurs, puisque l'éditeur prend la
peine de l'écrire noir sur blanc au dos, j'imagine que je ne suis pas
le seul pour qui les mots histoire complète ont quelque chose
de rassurant.)
Cette bédé, donc, a (un début et) une fin, du moins ce que je
considère comme une fin, ce qui ne veut pas forcément dire que tout
est mené à son terme, mais que je ne me sens pas volé de mon sens de
résolution, et je n'ai pas l'impression d'avoir lu une pub qui essaie
de me vendre une suite. Une fin comme une partie d'échecs : il reste
des choses sur l'échiquier, mais on a l'impression que quelque chose
s'est joué jusqu'à son terme.
Mais je cherche ici à dire un peu plus que cette histoire a une
fin : un type de récit qui me plaît particulièrement est — je ne
sais pas le définir très précisément — celui qui construit une
tapisserie en nouant les fils de plusieurs personnages dont aucun
n'est véritablement central, qui vont se croiser et interagir et
tisser ensemble un tableau dont aucun n'a de vision d'ensemble.
Je ne sais pas si ma description est très claire. Disons que c'est
un peu l'opposé du cycle, lequel va explorer les personnages dans la
longueur (i.e., dans le temps) : le type dont je parle les explore, au
contraire, dans la largeur (i.e., dans leurs interactions complexes
les uns avec les autres).
Le meilleur exemple que je puisse donner est ce qui est sans
doute mon livre préféré : La Vie
mode d'emploi de Georges Perec — qui est peut-être plus une
collection de nouvelles interdépendantes qu'un roman, un livre qui
(tout en remplissant toutes sortes de contraintes oulipiennes très
savantes et complexes, qu'on peut parfaitement ignorer en le lisant)
raconte, de façon généralement pas chronologique, la vie d'un immeuble
parisien et ses différents habitants, entre 1885 et 1975, et la
manière dont leurs chemins se croisent parfois (en amour, rivalité,
haine et toutes sortes d'autres péripéties) ou parfois s'ignorent.
J'ai pris ci-dessus la métaphore
(classique) de la
tapisserie dont les personnages sont des fils dessinant un motif qui
les dépasse : les lecteurs de La Vie mode d'emploi seront
aussi familiers de celle du puzzle où on cherche à comprendre la
manière dont tous les morceaux s'emboîtent et dans quel ordre il faut
les mettre. On pourrait évoquer un morceau de musique où les voix ou
instruments se répondent tout en concourant ensemble à la résolution.
Mais une autre métaphore possible, plus active et plus
confrontationnelle (et qui joue d'ailleurs aussi un rôle dans le roman
de Perec, aussi bien dans le contenu que dans les contraintes
formelles) est celle du jeu d'échecs : les pièces sur l'échiquier
jouent une partie qui dépasse chacune d'elles, dont elles ne voient
chacune qu'une petite partie, mais à laquelle elles contribuent toutes
de façon essentielle.
Ces différentes métaphores peuvent s'appliquer à la bédé dont je
parle ici, mais c'est la dernière que l'auteur a choisi d'utiliser
explicitement pour construire son histoire, en comparant ses
personnages à des pièces du jeu d'échecs. Ceci n'est pas transformé
en une contrainte dure comme chez Perec ; il n'y a pas, par exemple,
trente-deux personnages clairement regroupés en deux camps adverses,
et je ne pense pas non plus qu'il y ait de contrainte d'écriture
cachée au lecteur (comme le serait par exemple l'association à chaque
case de l'échiquier d'un motif à faire intervenir dans l'histoire).
On a donc plutôt affaire à une contrainte artistique « douce », mais
ça ne m'empêche pas de la trouver très bien utilisée, comme l'est la
mise en abyme du jeu d'échecs dans la bédé. D'ailleurs, la chute
justifie en quelque sorte le fait de ne pas avoir suivi de contrainte
formelle rigide.
Bref, tout ça est très réussi. (Et je dis ça alors que je n'aime
pas spécialement le jeu d'échecs — auquel je suis vraiment très
mauvais.)
Pour dire quand même un peu de quoi il s'agit sur le fond, ça se
passe de nos jours, à Bordeaux (je crois que ce n'est jamais dit, mais
on reconnaît bien la ville même si on ne la connaît qu'un peu), et
divers personnages vont se croiser : un lycéen frimeur qui accumule
les conquêtes, une élève nouvelle venue dans le même lycée, la
directrice d'une maison de retraite, un infirmier qui y travaille, un
bénévole qui vient tenir compagnie aux pensionnaires, l'acteur vedette
d'une série télé qui se sent pris au piège dans son rôle, deux amies
qui se confient leur vie amoureuse, une bibliothécaire dont le mari
est passionné de danse, et une vieille dame acariâtre finissant ses
jours dans la maison de retraite et qui est passionnée d'échecs. Les
actions de certains de ces personnages vont avoir des effets sur
d'autres les obligeant à agir à leur tour, avec une cascade de
conséquences. Ce n'est pas une énigme, mais il y a néanmoins une ou
deux révélations qui sont faites à la fin sur le fond et sur la nature
de la narration, qui peuvent passer pour des coups de théâtre.
Globalement, j'ai beaucoup aimé, et je recommande tout à fait,
notamment aux gens qui, comme moi, apprécient les histoires qui ne
sont pas interminables mais qui sont bien construites et qui apportent
un sens de résolution.
J'ai raconté il y a deux
semaines que j'avais eu la covid (pour la 3e ou peut-être même 4e
fois) : ça s'est manifesté sous forme d'un gros rhume, bien pénible
mais pas particulièrement affolant, qui a duré environ une semaine
sous cette forme (en gros du
au ). Sauf que si les symptômes de rhume ont
disparu (fatigue générale, mal à la gorge, nez bouché, ganglions
enflés, mal à la tête, sinusite ; et un nouvel autotest covid a été
négatif), il y en a un qui persiste obstinément, et qui a même empiré,
c'est la toux. Je tousse surtout la nuit : pas de façon continue,
mais par grosses quintes, de l'ordre de trois par nuit, qui sont très
violentes et me réveillent, et durent jusqu'à ce que je me lave le
nez, du coup ça m'empêche de bien dormir. (En plus de ça, je dors
dans le salon pour ne pas déranger le poussinet, et c'est nettement
moins confortable.)
J'ai consulté un médecin lundi, qui n'a pas repéré d'infection
(notamment, l'auscultation des bronches est normale) et m'a donc
prescrit un corticoïde (béclométasone) en inhalation à faire le soir…
ce qui ne semble pas aider du tout. Rien n'a l'air d'évoluer depuis
dix jours : si progrès il y a, il est très très lent.
On pourrait être tenté d'appeler ça un covid long, sauf que
j'ai assez souvent eu tendance à tousser longtemps après mes rhumes,
et notamment, il y a cinq ans et demi, j'ai eu un rhume (qui n'était
certainement pas le covid, en 2018) dont la toux s'est prolongée très
longtemps, et je pourrais reprendre presque mot pour mot aujourd'hui
la description que je faisais
alors :
J'ai eu un rhume qui, depuis […,] a évolué en une toux persistante,
presque uniquement nocturne, et qui m'empêche de dormir correctement.
Dans la journée, tout va bien, je tousse un petit peu mais rien de
vraiment gênant, je n'ai aucune fièvre, pas de ganglions enflés,
aucune fatigue particulière (autre que celle due au manque de
sommeil), aucune douleur notable (sauf à la gorge et aux sinus, juste
quand je me lève après avoir tellement toussé). Mais dès que je suis
couché, c'est quinte de toux sur quinte de toux, et impossibles à
résister […]. Certaines crises de toux sont tellement fortes que je
sens que je risque de vomir.
Impossible de savoir clairement si c'est une toux grasse ou sèche :
j'ai quelques mucosités qui sortent, j'ai l'impression qu'elles
refluent de l'arrière du nez […]. Peut-être que c'est juste
l'irritation de la toux qui produit du mucus et pas le contraire. En
tout cas, mes bronches elles-mêmes ne sont pas encombrées.
Je vois de ce que j'ai noté dans ce blog et
dans mon journal qu'en 2018 il
s'est écoulé approximativement quatre semaines entre les premiers
symptômes de rhume et la fin de la toux. Donc peut-être que je dois
m'attendre à ce que j'en aie encore jusqu'à fin octobre, ce qui
m'emmerde bien. (L'autre chose que je remarque est qu'en 2018 j'ai eu
bien mal à la gorge dès le début du rhume, et cette fois-ci aussi :
peut-être donc que le mal de gorge au début est indicateur du fait que
ça va déboucher sur une toux interminable ?)
En remontant plus loin, je me rappelle qu'à l'automne 1996 j'ai eu
un rhume qui a débouché en une toux interminablement longue (j'étais à
l'internat à l'ENS et je m'étais dit que mes voisins de
chambre devaient me détester parce que chaque nuit je toussais à n'en
plus finir). Comme je ne tenais pas de journal à l'époque, mes
souvenirs ne sont pas plus précis que ça, notamment sur combien de
temps ça a duré.
Bon, sans doute que cette toux-ci va finir par passer, mais je
reste assez perplexe. Manifestement, ce n'est pas tellement le virus
initial qui est en cause, puisque j'ai exactement le même phénomène
avec une covid (diagnostiquée comme tel par un test antigénique, je
suppose que ces trucs n'ont pas tellement de faux positifs) qu'avec
une infection en 2018 qui ne pouvait pas être due
à SARS-CoV-2 ; de toute façon, le test antigénique
suggère que le virus n'est plus présent. Et il n'y a pas non plus de
signe d'une réinfection bactérienne (pas de fièvre, pas de
bronchite…). Mais si c'est une sorte de réaction immunitaire
post-infection, on s'attendrait à ce que les corticoïdes ou les
antihistaminiques aident : or ils n'ont pas l'air de faire le moindre
effet (pas plus que l'acétylcystéine, dont la seule fonction semble
être de me rappeler le goût de la
cystéine).
Et manifestement je suis loin d'être le seul à qui ça arrive : une
personne que je connais a eu quelque chose de semblable il y a deux
ans, avec une vraie bronchite à la clé (qui est passée avec des
antibiotiques), puis de nouveau récemment (mais la toux est passée
d'elle-même). Une autre personne que je connais m'a dit avoir eu
presque exactement la même chose que moi, et à peu près au même
moment, en 2018. Et on trouve aussi quantité de pages Web, de qualité
douteuse, qui documentent le phénomène (par
exemple celle-ci
ou celle-là)
sans rien dire d'utile pour autant. Alors à défaut de pouvoir faire
autre chose, je documente à mon tour le phénomène en une page Web de
qualité douteuse qui ne dit rien d'utile pour autant.
Mise à jour ( —
initialement insérée sur le mauvais billet) : Je pense que maintenant
je peux dire que ma toux est finie (i.e., revenue à son état normal :
ça m'arrive quand même occasionnellement de tousser !). Mais ça aura
duré plus d'un mois !
Oracles en calculabilité : degrés de Turing et diverses généralisations
Avant-propos et motivation
Avant-propos : J'ai publié il y a quelque
temps un billet de vulgarisation
sur la notion d'« oracle » en informatique théorique. Ce billet-là
(qui se veut grand public) était initialement destiné à être
l'introduction à celui-ci (plus technique — mais, j'espère, pas
incompréhensible pour autant), mais j'ai décidé de les publier
séparément parce qu'ils sont, en fait, à peu près indépendants : on
peut donc commencer par lire celui-là si on veut une sorte
d'explication introductive et de motivation du sujet, mais ce n'est
pas nécessaire non plus.
Ce billet-ci, plus technique mais j'espère pas incompréhensible
pour autant (voir le paragraphe suivant pour les prérequis), vise à
présenter la notion classique de degré de Turing, et ensuite diverses
généralisations de celles-ci dans la recherche contemporaine en
logique / calculabilité. Mais je trouve aussi intéressant de
vulgariser la notion (classique) de non-déterminisme et celle (pas du
tout classique, mais que je trouve très intéressante) de
« co-non-déterminisme » (le terme est de moi).
Pour ce qui est des prérequis, ce billet-ci s'adresse à des
lecteurs qui savent déjà les bases de la calculabilité : c'est-à-dire
en gros, ce qu'est une machine de Turing ou un algorithme
(c'est-à-dire au moins approximativement : je n'ai pas l'intention de
rentrer dans quelques détails que ce soit sur les état et les bandes),
et une fonction calculable (c'est-à-dire, calculable au sens de
Church-Turing), ce genre de choses. Je vais essayer de faire en sorte
de ne supposer connu (outre des maths générales, du genre ce que c'est
qu'une fonction, un ensemble, une partie, une bijection, un ordre, une
relation d'équivalence…) que le contenu du chapitre 5 (Introduction
à la calculabilité) des notes de mon
cours Théorie
des langages à Télécom, auquel je peux donc renvoyer pour ces
notions de base en calculabilité (en attendant
un nouveau cours sur le
sujet). • Ajout () : la
première partie des transparents de mon nouveau cours
est disponible ici.
En tout cas, je ne suppose pas connu la notion de degré de
Turing puisque mon but est justement de l'expliquer et de voir comment
on peut aller plus loin. (Néanmoins, soyons honnête, les lecteurs
déjà un minimum familiers du concept trouveront sans doute mon billet
plus facile à suivre que si on le découvre pour la première fois
ici.)
Mon but ici est d'abord de définir la notion (tout à fait standard)
de réduction de Turing et de degré de Turing, puis de
présenter des extensions de ces notions qui me semblent à la fois très
importantes et profondément naturelles. J'ai appris l'existence de
ces notions en lisant deux articles d'un certain Takayuki
Kihara, Lawvere-Tierney
topologies for computability theorists
et Rethinking
the notion of oracle (et dans une moindre
mesure Degrees
of incomputability, realizability and constructive reverse
mathematics, mais je n'ai pas fini celui-là) : je cherche donc
à la fois à faire de la pub pour ces articles et pour les notions
qu'ils contiennent (parce qu'elles ont vraiment changé la manière dont
je pense à la calculabilité), à montrer que ces notions ne sont pas
terriblement techniques, et aussi simplement à assurer ma propre
compréhension de ces articles en en réexposant certains bouts à ma
façon. En outre, j'espère avoir apporté quelques éléments d'intuition
utiles derrière certaines des définitions ou des concepts que
j'expose. Je trouve particulièrement intéressante la notion de
« co-non-déterminisme » (le passage du niveau T2 au niveau T3), donc
mon but est notamment de faire de la pub pour ce concept (qui pourrait
sans doute s'avérer fécond en-dehors de la calculabilité).
(Notons que j'attribue ces notions à Kihara, qui
les a au moins synthétisées, et c'est par lui que je les ai apprises ;
mais je ne prétends pas qu'il a tout inventé — il a plutôt réussi à
relier, reformuler et réexposer de façon extrêmement convaincante des
notions dont certaines figuraient déjà ailleurs : je renvoie aux
références de ses papiers pour les citations antérieures, mais je peux
par exemple
mentionner Basic
Subtoposes of the Effective Topos de Lee & van Oosten,
ou Instance
reducibility and Weihrauch degrees de Bauer, qui sont dignes
d'intérêt si on apprécie le sujet.)
Bref, je veux commencer par expliquer ce qu'est un degré de Turing
ordinaire (celui d'une fonction — totale, simplement valuée — ℕ→ℕ),
puis donner trois extensions successives de cette notion (je vais
parler de degrés T1, T2 et T3 faute de meilleure
terminologie — Kihara n'en introduit pas vraiment). en expliquant ce
qu'elles changent, et si possible pourquoi elles sont naturelles et
intéressantes, et ce qu'on peut en dire : d'abord (T1) aux fonctions
partielles, puis (T2) aux fonctions multivaluées (ou
non-déterministes), et enfin (T3) aux « fonctions avec conseil » (une
sorte de « co-non-déterminisme »). Enfin, je veux essayer d'expliquer
pourquoi on a fait la « bonne » généralisation, et pour ça, je donne,
en guise de dessert, une construction tout à fait différente des
degrés (T1, T2 et surtout) T3 qu'on aura définis par des opérateurs
effectifs locaux (et évoquer brièvement le lien avec le topos
effectif, sur lequel j'ai
récemment écrit un billet, mais je
ne suppose pas qu'on ici l'a lu).
Conseil de lecture (en guise
de leitfaden) : Je sais que j'ai tendance à
entrer parfois dans de grandes digressions pas forcément tellement
utiles. J'ai essayé de les marquer comme telles (par des petits
caractères, ou en disant dès le début d'une section qu'on peut sauter
celle-ci) ; je n'ai sans doute pas toujours marqué tout ce qui pouvait
être sauté, mais les dépendances entre sections ne sont pas énormes.
Même si on n'a pas lu tout ce qui précède, je pense que ça vaut la
peine de goûter
le dessert (surtout
si on n'est pas convaincu par l'intérêt des définitions qui ont
précédé, car, après tout, il s'agit plus ou moins de les justifier).
Et surtout, je pense que ça vaut la peine de jeter un coup d'œil à
la définition des
degrés T3 pour la définition du « co-non-déterminisme », ou
simplement parce que le jeu à trois joueurs entre Arthur, Nimué et
Merlin est vraiment rigolo.
La notion la plus standard est la réduction de
Turing ordinaire (j'ajoute ordinaire parce que toutes
les notions qui viennent peuvent légitiment être aussi qualifiées
de réduction de Turing), et je vais commencer par la définir
précisément et dire quelques choses basiques à son sujet. Elle
concerne les fonctions ℕ→ℕ (c'est-à-dire, totales, prenant une seule
valeur pour chaque entier naturel), ou éventuellement ℕ→{0,1} mais ça
ne changera rien à l'histoire.
Une fonction f:ℕ→ℕ est dite réductible au sens
de Turing (=Turing-réductible) à une
fonction g:ℕ→ℕ, ou bien calculable avec g
pour oracle, et on note
(disons) f ≼Tg, lorsqu'il existe une
machine de Turing (i.e., un algorithme) qui calcule f en
ayant accès à un oracle calculant g, c'est-à-dire un gadget
magique capable de fournir à l'algorithme la valeur de g en
tout point souhaité.
Plus précisément, f ≼Tg signifie
qu'il existe une machine de Turing qui, quand on lui donne un
entier n en entrée, termine toujours en temps fini et
calcule f(n) comme sortie (peu importent les
manières dont n et f(n) sont codés
sur la bande de la machine de Turing tant que c'est raisonnable),
sachant que la machine dispose de l'accès à un oracle qui peut
calculer g(m) pour n'importe quel m
donné. (Voici un exemple de protocole d'interrogation de l'oracle :
la machine écrit m sur un ruban dédié, entre dans un état
spécial interrogation de l'oracle, l'oracle
remplace m par g(m) et place la
machine dans l'état réponse de l'oracle ; mais les détails sont
peu importants tant qu'on parle de calculabilité.) La machine peut
interroger l'oracle autant de fois qu'elle le souhaite (y compris pas
du tout, mais ça ne changerait d'ailleurs rien si on imposait
d'appeler l'oracle puisqu'on peut ignorer sa réponse), et elle
l'interroge sur les valeurs qu'elle veut et fait ce qu'elle veut des
réponses : la réponse de l'oracle pour une valeur m est
toujours exactement g(m), et c'est tout. (Le
temps d'interrogation de l'oracle est une étape de calcul, mais ceci
est peu important puisqu'on parle de calculabilité et pas de
complexité.)
En particulier, toutes les fonctions calculables (c'est-à-dire :
sans oracle) sont réductibles à n'importe quelle fonction, tout
simplement en utilisant un programme qui ne fait aucun appel à
l'oracle (en particulier, elles sont réductibles les unes aux autres,
ou par exemple à la fonction constante égale à zéro).
J'insiste bien (parce que c'est ce qui va changer dans la suite)
sur le fait que cette réduction de Turing « ordinaire » concerne des
fonctions totales. Notamment, l'algorithme réputé
calculer f en ayant g pour oracle est censé
terminer pour toute valeur n qu'on lui fournit en entrée
(du moins tant que n est une représentation légitime d'un
entier naturel, et la valeur calculée doit aussi en être une ; mais là
non plus, ces subtilités ne changent essentiellement rien). Je
réitère aussi le fait que la consultation de l'oracle n'est pas
limitée (ou payante) : l'algorithme a le droit de s'en servir aussi
souvent qu'il le veut.
La réduction de Turing (ordinaire, mais ça restera vrai pour les
généralisations que je vais introduire après) ≼T forme ce
qu'on appelle un préordre (relation réflexive et transitive)
sur l'ensemble des fonctions ℕ→ℕ, c'est-à-dire que :
d'une part, f ≼Tf : toute
fonction f est Turing-réductible à elle-même (c'est
évident) ; et
d'autre part, f ≼Tg
et g ≼Th
impliquent f ≼Th : si f
est Turing-réductible à g et que g est
Turing-réductible à h, alors f est
Turing-réductible à h (c'est assez facile à voir : si je
sais calculer f en utilisant g et que je sais
calculer g en utilisant h, alors pour
calculer f en utilisant h je vais utiliser
l'algorithme qui me permet f au moyen de g et, à
chaque fois que cet algorithme fait appel à l'oracle, j'utilise le
programme qui me permet g au moyen de h à la
place, en utilisant l'oracle donnant h comme boîte
noire).
Ce qui manque à une relation de « préordre » pour être un ordre,
c'est l'antisymétrie, et c'est justement ce qui justifie la définition
suivante.
On dit que f et g
sont Turing-équivalentes ou de même degré de
Turing quand chacune est réductible à l'autre (i.e., on peut
calculer f en ayant un oracle qui donne g, et
réciproquement) : c'est-à-dire qu'on note
(disons) f ≡Tg
lorsque f ≼Tg
et g ≼Tf. Ceci est une relation
d'équivalence (c'est la notion de relation d'équivalence associée à un
préordre) : les classes d'équivalence sont appelées les degrés
de Turing. Autrement dit, le degré de Turing
[f]T de f est l'ensemble
{g:ℕ→ℕ : g ≡Tf} de toutes
les fonctions ℕ→ℕ qui sont Turing-équivalentes à f, et
notamment, elles sont toutes Turing-réductibles les unes aux autres.
C'est-à-dire que deux fonctions sont Turing-équivalentes exactement
quand elles ont le même degré de Turing.
Intuitivement, un degré de Turing est la mesure de la puissance
d'un oracle. On peut aussi considérer que c'est une forme
d'« impossibilité à calculer » la fonction ou bien de « quantité
d'information » (totale) contenue dans la fonction f (mais
ce n'est pas exactement la même façon de la mesurer que, disons, la
complexité de Kolmogorov, pour ceux qui savent ce que c'est que ça :
il y a des rapports, bien sûr, mais disons très sommairement que le
degré de Turing est une mesure plus grossière que la complexité de
Kolmogorov ; comme ce n'est pas mon propos ici, je ne vais pas en dire
plus).
Le « préordre » de la réduction de Turing devient un vrai ordre
(partiel) sur les degrés de Turing : on dit qu'un degré de
Turing f est inférieur ou égal à un degré de Turing g,
et on note f≤g, lorsque une (ou, ce qui revient au même,
toute) fonction du degré f est Turing-réductible à une (ou, ce
qui revient au même, toute) fonction du degré g. (Autrement
dit, [f]T ≤ [g]T signifie
par définition exactement la même chose
que f ≼Tg.)
Parmi les degrés de Turing, il en est un plus petit, qu'on
note 0, c'est celui des fonctions calculables (c'est notamment
celui de la fonction constante égale à 0, c'est-à-dire un oracle qui
ne répond rien d'intéressant, et on peut voir ça comme une raison de
cette notation ; si on préfère, c'est la puissance des oracles qui
n'ont aucun intérêt comme oracles parce qu'on peut les calculer
directement sans oracle).
Je viens d'attraper le covid pour la troisième fois et un an, et
mois de quatre mois après la précédente
(première
fois : ; deuxième : ; troisième : ;
je donne la date des premiers symptômes, et tous les trois sont
validés par un test antigénique à domicile entre J+1 et J+3). Les
deux fois précédentes, et cette fois aussi jusqu'à maintenant, cela se
présente comme un gros rhume, qui commence par une sensation de
fatigue générale, puis évolue vers une rhinopharyngite classique avec
énormément de mucosités dans le nez et ensuite la voix enrouée et de
la toux ; dans la journée ce n'est pas trop gênant (j'alterne
paracétamol et ibuprofène, mais je suis globalement fonctionnel), mais
la nuit je dors vraiment très mal parce que je suis gêné soit par mon
nez encombré soit par la toux. (Et, par transitivité, le poussinet
dort très mal lui aussi, parce que je le réveille tout le temps en
toussant très fort.)
Outre que c'est agaçant, cela soulève chez moi une certaine
perplexité d'ordre scientifique.
Il y a 10–20 ans j'avais des rhumes tout le temps, c'est-à-dire au
moins tous les six mois : on en
trouve des traces dans
les vieux billets
de ce blog. Même l'obsédé que je
suis de l'auto-documentation n'a
pas tenu un registre précis de tous mes rhumes avec leur sévérité,
leur durée et leurs symptômes, donc je ne peux pas être totalement
précis, mais j'ai tendance à écrire une phrase du style réveillé
enrhumé ou mal dormi à cause de mon rhume dans mon journal,
donc je peux me baser là-dessus. J'avais l'impression que ces rhumes
récurrents avaient disparu ou s'étaient raréfiés en fréquence, mais en
recherchant un peu plus systématiquement quelques mots-clés dans mon
journal, il semble que ce ne soit pas vrai : j'en ai eu en 2013-02,
2013-03(?), 2013-09, 2014-03, 2015-04, 2015-12, 2016-11, 2017-03,
2017-09, 2018-05, 2018-11, 2019-02 (celui-là était peut-être la
grippe, en tout cas le tableau clinique était différent), 2019-10,
2022-04 (là j'ai soupçonné la
covid, mais un autotest était négatif, peut-être parce qu'il était
fait trop tôt) et 2022-10-0* (tout petit rhume, je n'ai pas fait de
test covid), puis enfin ces trois rhumes-covid en 2022-10-2*, 2023-06
et maintenant 2023-10.
On peut éventuellement interpréter mon absence de rhumes en 2020 et
2021 comme un succès des mesures de diminution des contacts liés au
covid (par exemple l'enseignement hybride, le port du masque).
Mais ce qui est perplexogène, c'est que le motif récurrent d'un
rhume tous les six mois semble se prolonger… sauf que maintenant c'est
le covid que j'attrape. (Je fais l'hypothèse que les tests
antigéniques n'ont quasiment pas de faux positif : s'ils sont
positifs, c'est vraiment la covid que j'ai. Pour les rhumes jusqu'à
2019, inversement, ça ne pouvait pas être ça. Les seuls pour lesquels
il y a un doute sont ceux de
2022-04, pour lequel j'ai fait un autotest négatif mais il était
peut-être fait trop tôt ou mal fait, et le poussinet a attrapé le
covid juste un peu après, ce qui est suspect, et celui de
2022-10-0*.)
Les symptômes de mes trois covids sont presque exactement les mêmes
que les rhumes que j'avais avant 2019 : la seule différence notable
est que le premier signe est plutôt une sensation de fatigue général
alors que mes rhumes antérieurs se manifestaient en premier par un
picotement désagréable dans l'arrière-gorge. À part ça, et à part des
fluctuations d'intensité, c'est essentiellement la même chose.
Du coup, je ne peux m'empêcher de me demander : que sont devenus
les virus qui causaient mes rhumes jusqu'à 2019 ? Étaient-ce aussi
des coronavirus ? (Je rappelle
qu'il y en a quatre espèces connues qui circulaient chez les humains
avant SARS-CoV-2 : OC43, 229E, NL63 et HKU1.
Quasiment tout le monde a eu au moins les trois premiers au moins une
fois.) Étaient-ce des rhinovirus ? Autre chose ? Comment savoir ?
Ce n'est pas qu'ils me manquent, mais le fait qu'ils aient disparu en
même temps que la covid est apparue est assez étrange (je veux dire
disparu chez moi : dans la population générale, il ne semble
pas qu'ils aient disparu ; j'ai entendu dire que la grippe B, ou
peut-être juste une lignée de la grippe B, avait disparu, mais si
c'était pareil pour OC43, 229E, NL63 et HKU1 je pense que ça se
saurait). C'est aussi étrange que les symptômes soient à ce point
semblables : ma meilleure explication est que, en fait, les symptômes
d'un rhume dépendent beaucoup plus de la réaction immunitaire de la
personne infectée que de l'agent infectieux (sauf au tout début).
Une autre chose intrigante est l'absence de contamination avérée
entre le poussinet et moi. En 2022-04 j'ai eu un rhume (pas
particulièrement intense ni notable), j'ai fait un autotest covid, qui
était négatif, et le poussinet a eu le covid juste après (il a été
bien malade ; et, ce qui est peut-être le plus notable, moi je n'ai
pas eu de deuxième infection) : donc peut-être que c'était la covid et
que je lui ai refilée, mais ce n'est pas totalement clair ; et en
2023-10, 2023-06 et 2023-10 jusqu'à présent, il semble que je n'aie
pas contaminé le poussinet. Donc peut-être qu'il est maintenant plus
immunisé que moi. Ou peut-être que le covid n'est pas si contagieux
que ce qu'on imagine. (De façon générale, les rhumes que j'avais
régulièrement avant, nous nous les refilions rarement l'un a l'autre :
ça a dû arriver une fois ou deux dans toute la série que j'ai
listée.)
Prière d'insérer ici une expression de mon agacement déjà plusieurs
fois manifesté sur le fait qu'on s'est tellement intéressé à la covid
qu'on a raté une occasion de mieux comprendre les infections
respiratoires en général (par exemple si on avait
commercialisé des tests PCR et antigéniques qui testent
une dizaine de virus différents et recensé tout ça ensemble).
Je dois donner un cours à Télécom Paris à partir du mois prochain
dont l'intitulé est Logique et Fondements de
l'Informatique (ça fait LFI, et du coup
lors d'un de mes derniers cours de l'an dernier j'avais sur mon bureau
informatique un PDF avec pour
titre Programme LFI bien en évidence sur l'écran :
je me demande si quelqu'un aura pris ça pour un message
politique).
Jusqu'à l'an dernier nous enseignions la même chose à tous les
élèves de première année (à une petite différence près dans les maths
pour des élèves admis autrement que par le concours commun) : ils
étaient juste divisés en six groupes essentiellement aléatoires,
chacun ayant exactement les mêmes enseignements (mais pas au même
moment, et pas par les mêmes enseignants). Ceci posait déjà quelques
difficultés pour l'enseignement de l'informatique parce que les élèves
de prépas scientifiques peuvent avoir ou non suivi une option
informatique dans laquelle ils apprenaient déjà un certain nombre de
choses de mon cours de Théorie des Langages
(notes
de cours ici) et du coup ils s'ennuyaient. Il y a deux ans a été
créée une nouvelle filière de prépa, MPI
comme Maths Physique Informatique (en parallèle avec les
filières MP, PC et PSI déjà existantes) : dès lors, il n'était plus
tenable d'enseigner à tout le monde exactement la même chose, et nous
avons réformé la première année à Télécom. Et spécifiquement, au
second trimestre (novembre–janvier), pendant que la plupart des élèves
auront un cours d'algorithmique générale, j'organiserai un cours pour
la population issue des filières MPI et MP
option info (qui auront déjà vu cette partie de l'algorithmique) pour
prolonger ce qu'ils auront vu avant d'entrer à l'école en logique et
fondements de l'informatique. Spécifiquement, je dois leur parler de
calculabilité (fonctions générales récursives, machines de Turing et
lambda-calcul), de logique, typage (lambda-calcul typé), et un peu de
l'isomorphisme de Curry-Howard (qui exprime le fait que typer un
programme informatique — spécifiquement, un terme du lambda-calcul —
ou vérifier une démonstration mathématique, sont en fait « la même
chose »). En parallèle de ça, un collègue leur fera
des TP d'introduction à l'assistant de preuve Coq.
Voilà qui a l'air tout à fait alléchant, sauf que je suis
complètement à la bourre dans ma préparation. J'ai plein d'idées,
mais la partie critique, c'est-à-dire commencer à écrire vraiment des
choses détaillées à présenter aux élèves, est encore au stade
complètement évanescent.
Une des raisons est que je voulais commencer par finir de
m'éclaircir les idées sur un sujet (distinct mais vaguement apparenté
ne serait-ce que parce qu'il s'agit aussi de calculabilité) sur lequel
je rumine depuis bien trop longtemps déjà : les oracles au sens de
Kihara (une généralisation des degrés de Turing ; malgré mon envie
d'en parler, il est peu probable que j'aie le temps d'évoquer les
degrés de Turing lors de mon cours à Télécom, mais ça ne m'empêche pas
d'avoir été conduit à reréfléchir à toutes sortes de questions
attenantes). J'ai commencé à écrire un billet dans ce blog à leur
sujet, billet dont l'entrée du mois
dernier ne devait être que l'introduction (et devrait au moins
expliquer le sens du mot oracle) ; mais ce billet est en train
de prendre des proportions déraisonnables et de progresser de plus en
plus lentement, et, une fois de plus, je me demande quoi en faire (la
publiée inachevée sachant qu'alors je ne la finirai jamais ? la
laisser dans mes cartons pour un jour où j'aurai plus de temps ?). Ce
qui est sûr, c'est que le fait de l'écrire m'aura aidé à comprendre
énormément de choses que je n'avais pas bien saisies, ce qui est,
après tout, le but principal.
Ajout () : le billet en
question a été publié ici.
Évidemment, le fait d'avoir attrapé la covid et d'être crevé parce
que je dors très mal n'aide pas beaucoup à progresser dans quelque
direction que ce soit.
Ajout () : la première
partie des transparents de mon cours
est disponible ici.
Ajout () : j'ai fait un
bilan de la première année de ce cours
dans un billet ultérieur.
❦
NanoPi
Quand je suis fatigué parce que malade, une chose que j'aime bien
faire est de la bidouille informatique, parce que ça ne demande pas
d'avoir l'esprit trop réveillé.
Il y a une douzaine d'années j'avais acheté des nano-ordinateurs du
nom de DreamPlug pour servir de
routeurs chez moi et chez mes parents (je n'aime pas les *box
qu'on nous oblige à prendre avec tout abonnement ADSL ou
fibre, et sur lequel on n'a essentiellement aucun contrôle : donc le
but est d'avoir une machine Linux qui remplace la *box en
servant de routeur et pare-feu domestique, point d'accès wifi, et
éventuellement d'autres choses comme stockage disque), ou simplement
pour jouer avec. Ce qui m'intéressait aussi était de mettre la main
sur une
architecture ARM
pour changer du x86/x86_64 de Intel et AMD.
(Pour ceux qui ne sont pas familiers avec le terme,
un nano-ordinateur ou ordinateur embarqué — ce n'est pas
exactement pareil mais aucun de ces termes n'est très précisément
défini — est un ordinateur d'une taille intermédiaire entre
un PC portable usuel et un téléphone mobile — rappelons à
ce sujet que les smartphones Android sont tous des ordinateurs Linux,
d'ailleurs typiquement d'architecture ARM, mais ce
n'est pas tout à fait pareil qu'un nano-ordinateur. Un
nano-ordinateur est typiquement alimenté par un câble du
genre USB ; il n'a normalement pas de ventilateur ni de
disque qui tourne, ce qui le rend parfaitement silencieux ; souvent il
n'aura ni clavier ni souris ni écran, mais sera utilisé à distance,
comme c'est le cas pour un routeur. Il peut servir à plein de choses
pour lequel on a besoin d'un ordinateur très compact et/ou peu
gourmand en énergie : mon poussinet, par exemple, utilise un Raspberry
Pi pour relever automatiquement un compteur de consommation électrique
dans le sous-sol de notre copropriété, afin de payer au syndicat des
copropriétaires la consommation de la recharge de sa voiture
électrique qui est prise par convention sur les parties communes ;
donc le nano-ordinateur, ici, sert juste à interroger le sous-compteur
et enregistrer les valeurs mesurées en heures pleines et en heures
creuses. Évidemment, il y a quand même des gens qui utilisent un
nano-ordinateur comme un ordinateur normal, par exemple pour le
transporter avec eux dans leurs bagages en espérant trouver la
possibilité de brancher clavier et écran n'importe où… bref, ça peut
servir à plein de choses.)
Le nano-ordinateur ARM tournant sous Linux le
plus populaire de très loin est le Raspberry Pi, qui a eu un
succès dingue auprès d'un public étonnamment large, montrant les
choses rigolotes qu'on peut faire avec ce genre de petites « boîtes à
tout faire ». Il ne convient cependant pas trop à mes usages parce
qu'il n'a qu'un seul port Ethernet, alors que j'en veux au moins deux
et idéalement trois.
Mes DreamPlugs jouent leur rôle (il y en a un dont l'alim est
morte, mais les deux restants servent de routeur, un chez moi et un
chez ma mère), mais un certain nombre de choses se sont avérées
décevantes. Le fabricant fournissait une version de Linux de qualité
douteuse (et surtout, comme souvent dans ce cas, pas du tout maintenue
après) : j'ai réussi, avec beaucoup d'efforts, à mettre une Debian
Linux beaucoup plus standard, mais tout le processus de démarrage a
toujours été un enfer. (On démarre typiquement un
ordinateur ARM avec un lanceur
appelé U-Boot
— appréciez le jeu de mot — qui va ensuite lancer le noyau Linux et
tout ce qui suit. Mais installer ou réinstaller U-Boot lui-même est
une véritable plaie, et dépend très fortement du type de machine :
dans le cas du DreamPlug il fallait en gros attraper le contrôle du
processeur par un mécanisme appelé JTAG, et qui
marchait une fois sur dix. Et il y avait des incompatibilités
subtiles entre versions de U-Boot et versions de Linux, surtout que
juste au moment où j'ai commencé à me servir de ce truc ils ont décidé
de changer de mécanisme de démarrage et inventé un truc, bien sur le
principe mais pénible dans la transition, appelé
les fichiers
devicetree.) À cause de ça, DreamPlugs sont sous une version de
Linux antédiluvienne, et je n'ose plus toucher à quoi que ce soit. En
plus de ça, ils sont extrêmement lents, et le port USB
est extrêmement peu fiable (aléatoirement il décide de ne plus
marcher).
Je voulais quelque chose de plus moderne. Sur la base de
recommandations concordantes, je me suis orienté vers
les NanoPi (qui, malgré leur nom, n'ont pas grand-chose à voir
avec le Raspberry Pi autrement qu'ils essaient de surfer sur la
popularité de ce dernier, si bien que Pi est devenu un terme
général pour nano-ordinateur). Spécifiquement, le NanoPi R6S
(fiche
produit
ici, documentation
là).
Plus chers que mes DreamPlugs, mais beaucoup plus attirants par
certains aspects : trois ports Ethernet gigabit plus deux
ports USB, ça c'est vraiment quelque chose qui me plaît,
alimentation par USB-C pour éviter la multiplication des
alims foireuses, démarrage par carte SD qui devrait
éviter les manipulations hasardeuses du JTAG en cas
de brickage accidentel,
architecture ARM-64 avec 8 cœurs, bref, c'est un
ordinateur raisonnablement puissant qui devrait pouvoir compiler ses
propres noyaux (ça évite les tracas de la compilation croisée
x86→ARM). Et en plus on peut y brancher un clavier
et un écran si on veut faire des manipulations en console (alors
qu'avec les DreamPlugs on ne pouvait avoir qu'une console série, et
c'est vraiment pénible à utiliser).
Mais bon, comme le dit mon ami David Monniaux, le chemin de l'enfer
est pavé de petites crottes de ragondin.
Le fabricant (FriendlyElec) fournit différents systèmes
d'exploitation pour ses NanoPi (voir la page de documentation liée
ci-dessus). Je me méfie pas mal de ces Linux dont on ne sait pas très
bien ce qu'ils contiennent, et surtout, combien de temps ils seront
maintenus. À vrai dire, le Debian modifié fourni par FriendlyElec
semblait bien fonctionner, mais je n'ai pas compris comment était
structuré son processus de démarrage (ce qui est un problème si on
veut le modifier, par exemple mettre à jour le noyau pour corriger un
trou de sécurité ou apporter un changement quelconque).
Je me suis alors tourné vers Armbian, qui est aussi une
modification de Debian Linux, mais communautaire celle-ci, et qui vise
à supporter énormément de nano-ordinateurs ARM
(à l'exception notable du Raspberry Pi). De fait, elle
marche très bien dessus
(j'ai gribouillé
quelques notes ici si ça intéresse quelqu'un).
Mais même si les choses marchent bien, on peut commettre plein
d'erreurs et perdre plein de temps avec : j'ai cru avoir des bugs
bizarres, par exemple, alors qu'en fait j'essayais de renommer les
interfaces Ethernet eth1
et eth2 de façon systématique (ce qui
apparemment n'est pas supporté par Linux : on peut les nommer
en gros n'importe comment sauf à essayer de garder les noms
par défaut mais en fixant les numéros de façon reproductible ;
autrement dit, Linux permet tout sauf exactement ce que
j'aurais voulu faire, qui était de permuter eth1
et eth2 quand elles apparaissaient dans le mauvais
ordre : c'est quand même assez fou comme limitation stupide de ne pas
savoir échanger deux noms de façon atomique) ; et ceci causait des
problèmes mystérieux ailleurs (les adresses MAC
étaient cassées, je ne rentre pas dans les détails de pourquoi).
Et après avoir perdu un temps totalement déraisonnable à reproduire
la config de mon ancien routeur (DreamPlug) sur le NanoPi, j'ai
découvert un problème inattendu : le noyau Linux fourni par Armbian
n'a pas prévu le support du petit bitoniau USB qui me
sert d'antenne wifi (ils ne compilent pas le
module ath9k_htc dont j'ai besoin). Ce qui devrait être
un problème mineur et facile à régler (recompiler un noyau avec une
configuration un peu différente), sauf que… je ne comprends pas
comment Armbian organise ses sources de noyau, et comment reproduire
leur processus de compilation. (Ils fournissent un script tout-en-un
qui prépare les sources et compile tout, mais évidemment ce script
dépend de choses comme Docker que je ne sais pas utiliser, et en tout
cas ne marche pas chez moi. Il n'y a pas juste un noyau Armbian
standard trouvé à un endroit standard et qu'on peut configurer et
compiler de façon standard, il faut comprendre toute leur sauce
autour.) Après trop d'heures perdues j'ai fini par jeter l'éponge.
Donc j'ai dû tout annuler et revenir sur mon DreamPlug qui décidément
ne se laisse pas si facilement remplacer.
❦
Coda : méditation sur les problèmes informatiques
Le méta-problème avec les problèmes informatiques, c'est qu'on se
sent tellement seul face à eux.
Quand j'ai un problème mathématique, le plus souvent c'est un
problème sérieux et dur, je peux concentrer le problème de façon
raisonnablement concise, et, si je n'arrive pas à le résoudre par
moi-même, le soumettre à des collègues ou sur MathOverflow.
Les problèmes informatiques, et par informatique je parle de
l'informatique comme ensemble de technologies et pas comme science, ne
sont typiquement pas clairement isolables, c'est bien le problème :
ils apparaissent dans un contexte donné, qui est souvent assez
compliqué (le problème se produit sur tel ordinateur quand on
cherche à faire telle chose précise, et il dépend sans doute
de plein de facteurs sur cet ordinateur et relatif à ce but, qui peut
lui-même être compliqué), et une bonne partie de la difficulté est
d'analyser le contexte. En général, ce n'est pas tant d'intelligence
qu'il y a besoin, mais de patience pour essayer de démêler les fils du
contexte, faire des essais (qui sont souvent lents et fastidieux,
surtout s'il faut redémarrer une machine ou lancer plein de
commandes), lire des documentations mal écrites (ou chercher les
documentations en question), comprendre du code mal commenté, etc.
C'est compatible avec l'esprit rendu brumeux par la fatigue d'une
mauvaise nuit covidée, mais ce n'est pas agréable.
Là par exemple je dois essayer de comprendre comment Armbian
organise sa compilation de noyau Linux pour pouvoir y ajouter un
module (et/ou saisir ce que leur script censé tout faire d'un coup
essaye de faire, et pourquoi il ne marche pas). Forcément je vais y
arriver, mais ça va être extrêmement long et fastidieux, et ce n'est
pas clair que le résultat soit satisfaisant (peut-être que cette
antenne wifi USB ne marchera pas sur le NanoPi pour une
raison d'obscure incompatibilité USB et que j'aurai tout
fait en vain).
En fait, le plus souvent, je me dis que ce dont j'ai besoin quand
je rencontre des problèmes lors de bidouilles informatiques, ce n'est
pas de l'aide au sens de quelqu'un qui s'y connaîtrait très bien et
qui me donnerait des réponses, mais plutôt le support émotionnel de
quelqu'un qui écouterait le récit de mes problèmes, accepterait de
s'intéresser au contexte précis, m'apporterait des suggestions
occasionnelles sur comment il s'y prendrait, et surtout m'aiderait à
traverser cette épreuve de patience. Je peux raconter mes aventures
sur mon blog, et me plaindre que la vie est dure, mais ce n'est pas
aussi cathartique.
Quand j'étais à l'ENS (à une époque où c'était un peu
moins évident que tout le monde avait son PC à lui) il y
avait une salle informatique partagée (la salle S) dans
laquelle beaucoup de normaliens venaient sur les machines fournies par
l'école, notamment pour hacker (au sens : écrire du code,
bidouiller, chercher à comprendre comment quelque chose fonctionne… ;
pas au sens, ou en tout cas pas forcément au sens, de chercher à
pirater quelque chose), et souvent se soutenaient moralement les uns
les autres dans ce qu'ils essayaient de faire (tu fais quoi,
là ? ― j'essaie de comprendre pourquoi Apache se plante dans la
négociation de contenu MIME ― ça a l'air
passionnant, raconte-moi un peu). Maintenant quand je suis face à
un problème informatique, je me sens résolument seul (le poussinet ne
veut pas s'y intéresser, ou me dit que je suis assez compétent pour
m'en sortir, ce qui est sans doute vrai, mais ce n'est pas qu'une
question de compétence). Peut-être qu'il faudrait recréer des
« bidouillodromes » informatiques pour recréer l'ambiance j'écoute
un peu tes problèmes, tu écoutes un peu les miens, et on échange
quelques suggestions.