Sujets connexes :
Le mystère de la disparition du coup 9 enfin résolu
Il ne s'agit pas du titre d'un roman policier, quoique la résolution d'un bug et celle d'une énigme empruntent quelques pistes communes.
Le titre officiel de cet article est "Correction du bug qui survient au 9ème coup d'une partie de scrabble jouée en topping sur Swebble". Voilà, le bug a été corrigé.
Mais annoncer qu'un bug a été corrigé, n'est-ce pas faire part de l'existence d'un bug ? Pourquoi risquer de ruiner sa réputation quand il est si simple de corriger ledit bug ni vu ni connu ?
Les raisons sont au nombre de trois.
1. Buggito ergo sum
Dans les systèmes informatiques complexes - ce qui est le cas du topping - les bugs sont inévitables. Il faut s'y attendre. Alors, autant voir les choses du bon côté, de manière positive, avec philosophie. En la matière, je me tourne volontiers vers les Lumières et ses fleurons ; ne trouve-t-on pas sous la plume exquise de Jean-Jacques Rousseau "femme qui pète n'est pas morte" ? La présence du bug est donc plutôt réjouissante.
Cette flatulence-ci aura vécu un an, c'est un peu long je vous l'accorde. Sa secousse fut ressentie à plusieurs reprises. En effet, plusieurs joueurs de topping avaient déjà signalé des erreurs (sous la forme de coups sautés) sans que l'on puisse clairement définir s'il s'agissait d'un comportement exceptionnel (dû à leur navigateur web ? à une connexion internet défaillante ?) ou bien à un bug inhérent au système du topping.
2. Satané bug
Le diagnostic du bug fut difficile, car il ne survenait pas systématiquement. En se basant sur les 1200 parties jouées en 2016, environ 15% des feuilles de route avaient - par erreur - un score à zéro pour leur coup 9. Car oui, c'est bien de cela qu'il s'agit. Au 9ème coup d'une partie de topping, il arrivait que le score marqué par le joueur ne soit pas comptabilisé dans son cumul. Tout simplement. Il écopait d'un zéro.
On imagine aisément la déception voire la colère qu'a pu ressentir le pauvre scrabbleur au moment où il constate sur sa feuille de route qu'une ligne est vide. Il est pourtant persuadé d'avoir marqué des points, et - s'il a fait le top - il revoit avec précision tourner le smiley animé de la victoire au-dessus de la mention BRAVO !
Je suppose que les adeptes du topping apprécieront de savoir qu'ils peuvent désormais reléguer ce bug au rang de mauvais souvenir et jouer sereinement, sans consulter leur feuille de route la peur au ventre.
3. Intuition
Ce bug aura donc enkikiné nombre de joueurs pendant un an, jusqu'à sa résolution en décembre dernier. Quelques jours auparavant, l'utilisateur Iqalummiuq - comme d'autres avant lui - signale à son tour un bug ; il a cependant la bonne idée de préciser qu'il a eu lieu au neuvième coup.
9ème coup ? Ce chiffre me met aussitôt la puce à l'oreille (façon de parler, étant un lombric, je suis dépourvu d'oreilles, jugez-en à mon avatar, c'est parfois handicapant dans un cadre de socialisation mais il paraît que j'ai quand même de la chance de ne pas pouvoir écouter le dernier album de M. Pokora). Mon intuition est la suivante : dans la phrase "le bug est survenu au 9ème coup", "9ème coup" n'est pas simplement un complément circonstanciel de temps. Il y a de la causalité dans l'air : "le bug est survenu PARCE QUE c'était le 9ème coup".
Une fois cette hypothèse posée, il faut la démontrer. Ce qui sera fait assez facilement. L'investigation amène à la découverte suivante : le bug est dû à une grossière erreur de programmation.
Plaisir de la découverte. Plaisir de comprendre. Plaisir de se sentir soudain intelligent !
Employer le terme "intelligent" à mon endroit risque de me faire traiter de "prétentieux".
Qu'importe, sur le moment, j'ai éprouvé un sentiment trouble, de type entrelacement glacial-brûlant, je prenais conscience simultanément de ma bêtise (le bug) et de mon intelligence (la compréhension du bug). C'est ce sentiment que je souhaitais partager avec vous.
Certains en retiendront la facette découverte brillante, d'autres la facette erreur. Ces derniers auront bien raison. Quel terrible aveu d'incompétence. Ce bug provenait bel et bien d'une erreur digne d'un programmateur débutant.
4. Les mains dans le cambouis
À présent, je vais tenter de vous expliquer le bug. Attention, ça risque de devenir technique.
Déjà, il faut savoir qu'en programmation, les mots (chaînes des caractères) et les nombres ne sont triés de la même manière. Considérons les trois mots suivants : MP3, MP4, MP33. N'étant pas des nombres, ils sont triés comme ils apparaîtraient dans le dictionnaire, dans cet ordre : MP3, MP33, MP4 (quand bien même le nombre 33 est supérieur à 4).
Le système du topping considérait à tort les numéros de coups comme des mots. Le bug était dû à un problème de tri.
Au topping, les scores des joueurs sont comptabilisés en prenant en compte le moment où chaque mot a été trouvé (à la milliseconde près).
En général, un coup commence une poignée de millisecondes après la fin du précédent (le temps que l'algorithme effectue quelques instructions). Parfois (dans 15% des cas), le système est tellement rapide qu'il lui arrive de débuter un coup moins d'une milliseconde après avoir terminé le précédent, si bien que les deux coups sont associés au même référentiel temps. Et c'est là que ça buggait ! Quand il devait comptabiliser les points du joueur, le système - qui triait les numéros de coups comme des mots - traitait le coup 10 avant le 9. Ensuite, lorsqu'il traitait le coup 9, il ne comprenait pas pourquoi les mots proposés par le joueur l'avaient été antérieurement (au niveau de l'horodatage) à un coup déjà joué (le 10). Alors il ignorait tout simplement les mots proposés par le joueurs pour le coup 9. Corriger le bug fut un jeu d'enfant.
Voilà, vous pouvez retourner faire du topping.
5. Repères chronologiques
Quelques dates clés du topping en ligne sur Swebble.
- 2012 (février) : lancement
- 2016 (janvier) : version 2, plus véloce et plus stable mais qui s'avérera comporter le fameux bug du 9ème coup !
- 2016 (juillet) : adaptation pour smartphones et tablettes
- 2016 (décembre) : résolution du bug du 9ème coup