Ami lecteur, je te conseille d’aller jusqu’au bout de cet article, même si le début te paraît un peu obscur.
Dans les programmes informatiques, il existe un mode de fonctionnement (un pattern pour les plus avertis) qui permet de ne lancer qu’une seule instance d’un processus en mémoire.
Je m’explique.
Il existe des opérations “coûteuses” en programmation, et qui ne doivent être effectuées une seule fois, quel que soit le nombre d’utilisateurs qui utilisent ces opérations.
Pour donner un exemple de la vie de tous les jours, imaginez que vous montez une armoire. Le processus est le suivant :
- Vous prenez votre tournevis dans la boîte à outils sous l’évier
- Vous assemblez les planches de la nouvelle armoire
- Vous vissez comme un forcené en maudissant IKEA
- Vous posez l’armoire contre le mur et vous soupirez
Si vous êtes plusieurs à monter des armoires, chacun effectue le même processus (les quatre étapes) de la même façon.
Mais si les armoires sont dans la cave ?
Dans ce cas, seules les 3 dernières actions sont répétées par chacun des monteurs. Pour la première, vous allez être intelligents et emporter une fois pour toutes la boîte à outils avec vous plutôt que chaque gars se tape les huit étages pour récupérer son tournevis à chaque nouvelle armoire à construire…
Voilà M. Jourdain, vous venez de découvrir l’idée du pattern Singleton.
Ami lecteur, fais-moi confiance, continue encore un peu, le jeu en vaut la dentelle.
Toutefois, il arrive qu’un programme ne fasse pas exactement ce qu’on lui demande, cela s’appelle un bug. Ce bug peut provenir de différentes origines : soit c’est le programme (codé avec les mimines) qui déconne, soit c’est la machine qui héberge le programme (votre Windows, votre Mac, votre serveur d’applications etc.) qui pète les plombs.
Dans le cas présenté plus haut, c’est à peu près la même chose : soit vous avez mal codé votre singleton, soit la machine vous joue des tours. Autant le premier cas est fréquent (repas indigeste, engueulade avec votre femme, QI inférieur à 60 etc…), autant le second est rare [pour ceux que ça intéresse, et si j’ai bien tout compris, un Singleton peut se dédoubler dans des environnements distribués, dans des conditions plus ou moins inhabituelles].
Dans les deux cas, il se trouve que l’action que l’on voulait unique est dédoublée. Et souvent cela génère des erreurs imprévues. Par exemple, un monteur d’armoire remonte chercher une boîte à outils qui est déjà dans la cave. C’est sûr, c’est pas super grave vu comme ça mais quand même c’est chiant, surtout si vous n’avez pas d’ascenseur et que le monteur est dépressif et suicidaire. Ou alors que votre femme est toute seule là-haut pendant que vous, vous suez en train de construire cette armoire à la con dans une cave humide et mal éclairée alors qu’elle aurait pu venir et… Mais je m’égare…
Dans la vraie vie (y a-t-il une vie après l’ordinateur ?), me disais-je ce matin dans les toilettes bleues de l’inspiration, est-ce que le fait d’avoir des jumeaux n’est pas un bug du Singleton ?
Je m’explique encore.
Dans une immense majorité des cas, la femme possède un ovule, qui est fécondé avec un spermatozoïde, le plus balaise ou le plus négociateur. Et en sort un joli bébé qui fait gazou-gazou et qui quinze ans après réclame une “mob”.
Il arrive parfois qu’au lieu d’une seule instance de bébé, il en sorte deux. On appelle ça des jumeaux. Comme dans le cas informatique précédent, il faut différencier les vrais et les faux jumeaux.
Les faux jumeaux correspondent à un bug de la matrice (jeu de mot qui tue). Deux ovules sont présents, tu m’étonnes que les spermatozoïdes, machos comme leur père, ne vont pas se gêner pour féconder tout ce qui bouge.
Les vrais jumeaux correspondent à un bug de l’ovule lui-même : au lieu de se diviser normalement de manière autonome (après la méïose), ce turlupin se coupe en deux et crée ainsi deux répliques identiques du même bébé.
Dans les deux cas, à l’annonce par l’obstétricien, c’est la mère qui devient dépressive. Surtout lorsqu’il tente la blague : “eh oui madame, d’un coup, deux pierres”.
Tout ça pour en arriver à la question fatidique.
Les vrais jumeaux : bug d’un oeuf ?
Au cas où des adolescents ou des communistes lisent ce blog, cliquer ici pour comprendre le jeu de mot.
Ca valait le coup d’attendre hein ?
L’immatroscope du jour :