conferences-de-poche

Un bon exemple de question sans réponse, c’est une question souvent posée par les enfants aux adultes, c’est la question Jusqu’à combien tu sais compter ?. A priori, il n’y a pas de limite à jusqu’à combien je sais compter. Et je pourrais être tenté de répondre : Je sais compter jusqu’à l’infini. Mais en réalité, personne ne peut prétendre pouvoir compter jusqu’à l’infini.

En réalité c’est une question très embarrassante. Beaucoup plus embarrassante à mes yeux que d’autres questions d’enfant réputées pour être embarrassantes. Comme par exemple Comment on fait les bébés ? ou Est-ce que tu as déjà pris de la drogue ?.

Quand on me pose la question de jusqu’à combien je sais compter, ma stratégie en général c’est de détourner la conversation vers une autre question à peu près similaire, mais à laquelle je peux répondre. Par exemple : jusqu’à combien je sais compter sur mes doigts. Compter sur ses doigts ça s’appelle la dactylonomie, et c’est vraiment un sujet passionnant.

En France on apprend en général à compter sur ses mains, en dépliant les doigts un par un en partant du pouce. Avec une main on peut en général compter jusqu’à 5. Et vu qu’on a deux mains, on peut compter jusqu’à 10. C’est la façon la plus primitive de compter sur ses doigts. C’est sûrement comme ça que comptaient sur leurs doigts, les premiers humains qui ont compté sur leurs doigts. Et c’est sûrement pour ça qu’on utilise la base 10 (le système décimal) pour représenter les nombres dans la vie de tous les jours.

Mains qui comptent "à la française"

Cette technique (qu’on appelle communément la technique à la française), a un énorme défaut : elle est extrêmement inconfortable lorsqu’on atteint le nombre 4. Et on a un gros problème avec ça en France, un problème de santé publique, avec un nombre de tendinites à l’auriculaire beaucoup plus élevé qu’ailleurs.

Dans d’autres endroits on a des manières beaucoup moins douloureuses de compter jusqu’à 5. Par exemple en partant de l’index et en finissant par le pouce. En partant de la main ouverte et en fermant les doigts un par un. Ou encore en partant du pouce, mais en finissant par l’annulaire.

Et donc tout ça c’est très bien pour compter publiquement, si je veux que la personne en face sache où j’en suis, mais si je dois compter pour moi-même, en général je vais utiliser une autre technique qui s’appelle la technique décimale à deux chiffres. À deux chiffres ça veut dire que chacune de mes deux mains va représenter un chiffre (la main gauche c’est le chiffre des dizaines et la main droite c’est le chiffre des unités). Et décimale ça veut dire que chacun de ces deux chiffres peut avoir 10 valeurs (de 0 à 9).

J’associe un chiffre entre 0 et 9 à chacune de mes phalanges, comme sur un clavier de calculatrice. Et pour compter, je déplace mes pouces sur mes phalanges. C’est très pratique et très intuitif. Et surtout, ça permet de compter jusqu’à 100.

Mains qui comptent en décimal à deux chiffres

Enfin, dans les cas où ce que je dois compter risque de dépasser la centaine, j’utilise une dernière technique, la technique binaire à 10 chiffres. À 10 chiffres ça veut dire que chacun de mes doigts va représenter un chiffre. Binaire ça veut dire que chacun de ces chiffres peut avoir deux valeurs (0 ou 1). Cette technique est un peu plus compliquée, elle demande pas mal d’entraînement, mais elle a un énorme avantage : elle permet de compter au-delà de 1 000 !

Mains qui comptent en binaire à dix chiffres

J’associe à chaque doigt une puissance de 2 (1, 2, 4, 8, 16, 32, 64, 128, 256, 512). Et pour savoir où j’en suis dans le compte, je n’ai qu’à additionner les nombres correspondant aux doigts levés.

Mains qui comptent en binaire à dix chiffres de 0 à 31

Vous avez sûrement entendu parler de cette technique, elle est de plus en plus utilisée. Là, il y a quelques jours, j’étais chez une amie qui est tatoueuse et elle me racontait que de plus en plus de gens viennent se faire tatouer les puissances de 2 sur les doigts pour pouvoir plus facilement compter en binaire.

Et une fois que j’en arrive là dans l’explication de jusqu’à combien je sais compter sur mes doigts, en général mon interlocuteur a totalement oublié sa question de départ qui était, pour rappel, jusqu’à combien je sais compter ? (tout court). Faire oublier cette question c’était mon but, mais malheureusement, moi cette question je ne vais pas l’oublier de si tôt…


Par exemple, dans l’histoire, c’est quoi le plus loin qu’on est allé dans le décompte des nombres entiers ? Dans le Guiness Book Des Records, le record du plus grand nombre compté à voix haute il est détenu par un Américain qui s’appelle Jeremy Harper et qui a compté jusqu’à 1 million en une centaine de jours. Et c’est assez étonnant, mais ils ne mentionnent pas du tout Opalka.

Opalka c’est un peintre qui un jour a décidé de tout arrêter pour consacrer tout son temps au décompte des nombres de 1 à l’infini. Et donc il comptait à voix haute en s’enregistrant sur un dictaphone. Et en même temps il écrivait les nombres en tout petit sur des tableaux. Avec de la peinture à l’huile blanche (du blanc de titane). Malheureusement Opalka est mort avant d’arriver à l’infini, mais il a quand même réussi à compter jusqu’à plus de 5 millions ! 5 fois plus que Jeremy Harper.

Et alors quand j’ai écrit au Guiness à ce sujet, ils m’ont répondu qu’ils connaissaient bien le cas Opalka. Mais que son record ne pouvait pas être validé, parce qu’il y avait une erreur dans le comptage. Et en effet, c’est connu, sur un des tableaux d’Opalka il manque un nombre. Un jour il était un peu fatigué et il est passé directement de 2 273 543 à 2 273 545. Mais franchement, c’est pas très grave ! Surtout que Jeremy Harper il n’a pas oublié de nombre mais contrairement à Opalka, il ne comptait pas de tête. Il était assisté par un ordinateur, il avait un écran devant lui avec les nombres qui défilaient automatiquement. Et ça, entre nous c’est un peu de la triche. Parce que compter, pour un ordinateur c’est vraiment facile. Compter c’est même ce que les ordinateurs savent faire de mieux. Et je peux aller plus loin : compter c’est la seule chose que les ordinateurs savent faire.

Et c’est ça qu’on appelle le numérique quand on parle des ordinateurs. Numérique ça veut dire quoi ? Ça veut juste dire nombre. Parce qu’un ordinateur, en fait c’est juste un nombre. Et quand on dit le digital pour parler des ordinateurs. Digital ça veut dire quoi ? Ça veut juste dire doigts (comme dans empruntes digitales). Parce qu’en fait un ordinateur c’est quoi ? C’est juste une machine qui compte sur ses doigts en binaire. Rien de plus ! Rien de plus si ce n’est qu’elle compte très vite, et qu’elle a beaucoup de doigts.

Rien que mon téléphone portable, mon ordinateur de poche, il fait 128 Go. 128 gigaoctets ça veut dire qu’il peut compter sur 128 milliards de mains. Et les mains des ordinateurs c’est des octets, ce qui veut dire qu’il y a 8 doigts par main. Et je ne sais pas vous, mais moi ça me fait toujours un peu bizarre de savoir que j’ai 128 milliards de mains à 8 doigts qui comptent en continu dans ma poche.

Les ordinateurs n’ont pas toujours été aussi petits ! S’ils sont si petits aujourd’hui c’est principalement à cause de la loi de Moore. La loi de Moore pour résumer, ça dit que tous les deux ans on a besoin de deux fois moins de place pour construire un ordinateur de même puissance. Donc si mon ordinateur fait cette taille :

Un objet de taille 1

Il y a deux ans, pour la même puissance, il aurait dû faire le double :

Un objet de taille 2

Deux ans avant, le double du double :

Un objet de taille 4

Deux ans avant, le double du double du double :

Un objet de taille 8

Deux ans avant, le double du double du double du double :

Un objet de taille 16

Et ainsi de suite :

Un objet de taille 32

Donc là je vais m’arrêter parce que je n’ai plus de place.

Un objet de taille 64

Mais vous avez compris le principe, c’est exponentiel, ça augmente très vite. Et si je répétais l’opération 50 fois, qu’est-ce qu’on découvrirait ? On découvrirait qu’il y a 100 ans, pour faire un ordinateur aussi puissant que mon ordinateur de poche il fallait un immeuble de 60 étages qui occupe toute la superficie de la ville de Toulouse.

Et je trouve que ça explique assez bien pourquoi, à cette époque, personne n’avait envie de construire des ordinateurs. Parce que pour construire un ordinateur de la taille de Toulouse, déjà il te faut pas mal de place, et puis surtout il te faut du temps. Et il ne faudrait pas que la construction de l’ordinateur te prenne trop longtemps. Parce que si par exemple ça te prend 100 ans : au bout de 100 ans, le jour où tu as fini ta ville-ordinateur, tu es content, tu sors faire un tour pour en parler autour de toi et là, tu découvres quoi ? Que tout le monde a dans sa poche, un ordinateur aussi puissant que celui que tu viens de mettre 100 ans à construire !


L’autre pendant de la loi de Moore c’est que si on construit des ordinateurs qui font toujours la même taille, ils doubleront de puissance tous les deux ans. Et du coup, on peut légitimement se poser la question : Si les ordinateurs sont toujours de plus en plus puissants, de manière exponentielle, pourquoi est-ce qu’aujourd’hui, ils rament toujours autant ? Et ça c’est très bien expliqué par la loi de Wirth. La loi de Wirth en gros ça dit que plus les ordinateurs sont rapides, plus les programmes qu’on développe pour ces ordinateurs sont lents. Plus on a de puissance, plus on fait des programmes qui sont gourmands en puissance. Si la puissance des ordinateurs double tous les deux ans, la lenteur des programmes doublera tous les deux ans.

Par exemple à la fin des années 90, on avait un logiciel qui s’appelait Microsoft Word, qui était un petit éditeur de texte très pratique, mais avec un gros défaut, il ramait beaucoup. Si on avait gardé ce logiciel tel quel, aujourd’hui sur nos nouvelles machines, il serait extrêmement rapide. Mais au lieu de ça, au fur et à mesure que les ordinateurs devenaient plus puissants, on a ajouté des fonctionnalités à Microsoft Word, de telle sorte à ce qu’ils soient toujours aussi lents. Et c’est comme ça, on n’y peut rien. Ce que nous dit la loi de Wirth, c’est que la lenteur des programmes est inhérente à l’informatique tel qu’on le pratique.

Si vous avez connu les Mac avant les années 2000, vous vous souvenez peut-être de ce très bel icone en forme de montre.

La petite montre de Susan

C’était un curseur, qui avait été dessiné par Susan Kare. Et il apparaissait dès que l’ordinateur ramait. Et même si la montre était très bien dessinée et très jolie, les utilisateurs détestaient voir la petite montre de Susan. Et c’est normal car quand on attend quelque chose, il y a rien de plus agaçant que de regarder sa montre, ça fait paraître le temps encore plus long.

Utilisateur agacé qui regarde sa montre

Quand Apple a sorti sa nouvelle génération de système d’exploitation (OSX), ils auraient pu se dire : les gens détestent voir la petite montre de Susan, en même temps nos ordis sont devenus plus puissants, on va s’arranger pour que les programmes ne rament plus. Mais ils ne se sont pas du tout dit ça. Ils se sont dit : Personne n’aime voir la petite montre de Susan, qu’à cela ne tienne, on va remplacer le joli dessin de Susan par un icone nettement moins joli. Une sorte de petite roue qui tourne, un peu en forme de spirale…

La roue qui tourne en forme de spirale

…comme ça quand les ordinateurs rameront, ça va un peu hypnotiser les gens et ils ne vont pas voir le temps passer.

Utilisateur hypnotisé

Sous aucun prétexte Apple n’aurait fait des programmes qui rament moins. Parce qu’il faut bien comprendre quelque chose : si les programmes ne rament plus, on n’a plus besoin de faire des nouveaux ordinateurs plus puissants. Et s’il n’y a plus de nouveaux ordinateurs plus puissants, aucune raison de faire des nouveaux programmes plus gourmands. Et s’il n’y a plus besoin de faire des nouveaux ordinateurs ni de faire des nouveaux programmes, c’est tout le modèle économique d’Apple qui s’effondre.


En fait, l’histoire de l’informatique, c’est le syndrome de la Reine rouge.

Alice et la Reine rouge

Je ne sais pas si vous vous souvenez dans Alice au pays des merveilles, il y a ce passage où Alice et la Reine rouge courent pendant très longtemps. Elles courent dans une sorte de forêt. Et c’est très fatiguant pour Alice. Parce que la reine court vraiment vite et aussi ça fait vraiment longtemps qu’elles courent.

À un moment Alice est beaucoup trop fatiguée, elles décident de faire une pause et Alice s’aperçoit alors qu’elles n’ont pas bougé de l’endroit où elles étaient au début de la course. Elles sont toujours devant le même arbre devant lequel elles étaient quand elles ont commencé à courir. Et donc Alice, elle dit à la reine : C’est bizarre, là d’où je viens, quand on court beaucoup comme ça, on change d’endroit. Et la Reine rouge lui répond : Ça doit être très lent là d’où tu viens. Ici il faut courir de toutes ses forces, si on veut rester au même endroit.

Et pour moi, l’histoire de l’informatique c’est vraiment ça. On court à des vitesses folles, et c’est comme si on n’avançait pas. On a des débits internet super faibles et on galère à regarder des vidéos en 720p. 10 ans plus tard, on a la fibre, la 5G, les débits ont été multipliés par 10, et nous qu’est-ce qu’on fait ? Au lieu de profiter de vidéos fluides en 720p, on galère à regarder des vidéos en 4K. On a des disques durs de quelques mégaoctets qui sont toujours presque pleins, 20 ans plus tard, on a des disques durs de plusieurs téraoctets et ils sont toujours presque pleins.

Et plus on court, et plus on reste au même endroit.


Un autre exemple que j’aime bien du syndrome de la Reine rouge dans l’histoire de l’informatique, c’est l’histoire du bug de l’an 2000.

Le bug de l’an 2000 on a pris l’habitude de l’écrire comme ça :

Y2K BUG

(Le Y ça veut dire année en anglais, et le K ça veut dire 1000 c’est le K de Kilo). Le bug de l’an 2000 c’est donc un bug qui n’a pas eu lieu. Il devait se produire au 1er janvier 2000 un peu partout dans le monde. Et s’il n’a pas eu lieu c’est parce qu’on a vraiment eu peur et qu’on a dépensé des centaines de milliards de dollars pour le corriger avant qu’il ne se produise.

Le problème qu’on avait est assez simple à comprendre : Quand on faisait des programmes dans les années 80 et qu’il fallait garder la date en mémoire, on n’écrivait pas 1980 (ça prenait trop de place), on écrivait seulement 80. Et au moment de restituer l’information on ajoutait 19 devant.

L'an 1980 en mémoire

À cette époque les gens se disaient que c’était cool, car ça économisait pas mal de mémoire. Ils n’étaient pas bêtes, ils savaient bien que ça ne pourrait pas durer éternellement. Mais tout le monde était d’accord pour se dire que les programmes des années 80, ça ferait longtemps qu’ils ne seraient plus utilisés dans les années 2000.

Sauf que 19 ans plus tard on est en 99, et il s’avère que des programmes des années 80 sont encore utilisés un peu partout dans le monde. Sauf que bientôt on va passer à l’an 2000. Et selon comment les programmes sont faits, soit ils vont nous ramener en 1900, soit (encore pire) nous emmener en 19100 ! Et croyez-moi, ça aurait eu des conséquences assez graves.

Diagramme du passage à l’an 1999 et du passage de l’an 1999 à l’an 1900 ou 19100

Heureusement on a réagi à temps ! Et surtout on a appris de nos erreurs. Maintenant ce n’est plus du tout comme ça qu’on stocke les dates en mémoire. Maintenant pour stocker la date on utilise généralement ce qui s’appelle le temps POSIX. Le temps POSIX c’est le nombre de secondes qui se sont écoulées depuis le 1er janvier 1970. Par exemple, au moment où j’écris ce texte, le temps POSIX c’est 1 666 012 960.

Comme c’est un nombre de secondes c’est facile à convertir en nombre d’années et surtout, ça ne pose pas de problèmes quand on change de siècle ou de millénaire ! Et ce nombre de secondes, cette valeur, on va la stocker sur 4 octets (c’est à dire 4 mains à 8 doigts qui comptent en binaire) et comme ça, on est tranquille pour un bon bout de temps. Plus précisément on est tranquille jusqu’en 2038. Et ça va 2038, c’est dans longtemps ! De toute façon, les programmes qu’on a aujourd’hui, ça fera longtemps qu’ils ne seront plus utilisés en 2038…

Je rigole bien sûr, c’est problématique et on est au courant. Ça s’appelle le bug de l’an 2038 et c’est pris très au sérieux. On a pris l’habitude de l’écrire comme ça :

Y2K38 BUG

Rapidement, l’idée pour fixer ce bug, c’est qu’au lieu d’utiliser 4 octets, on en utilise 8. Et si on stocke le temps POSIX sur 8 octets, le prochain bug de ce type il se produira dans 292 milliards d’années. Et ça c’est dans vraiment longtemps. C’est ce qu’on appelle le bug de l’an 292 milliards. On l’écrit comme ça :

Y292G BUG

(Le G ça veut dire milliard, c’est le G de Giga). Et même si c’est dans vraiment longtemps (l’an 292 milliards c’est bien après la disparition de la terre et du soleil), c’est important de préciser que ce bug il existe quand même, c’est vraiment une limitation qu’ont nos ordinateurs. Et c’est important de le préciser parce que ça rejoint la question que vous me posiez au début quand vous me demandiez jusqu’à combien je sais compter ?

Parce que comme je le disais au début, personne ne peut prétendre compter jusqu’à l’infini. Et même pas les ordinateurs. Et je peux aller plus loin : les ordinateurs, même s’ils comptent plus vite que nous, ils peuvent encore moins compter jusqu’à l’infini que nous.

Parce que compter jusqu’à l’infini c’est pas une histoire de compter vite ou de compter beaucoup. Tu peux être le processeur le plus rapide du monde et avoir une cadence de 50 GHz (c’est à dire être capable de compter 50 milliards de nombres par seconde). Tu peux compter de 10 en 10, de 1000 en 1000, tu peux même compter de plus en plus vite sans jamais arrêter d’accélérer. Quoi que tu fasses, l’infini il ne va pas se rapprocher pour autant.

Parce que compter jusqu’à l’infini c’est comme courir avec la Reine Rouge. Tu peux compter de toutes tes forces, aussi longtemps que tu veux, tu seras toujours au même endroit, aussi loin de ton but.