À retenir
- Le bug n'apparaît que lorsqu'on s'aperçoit que le code est théoriquement invalide.
- C'est un paradoxe humoristique du milieu de la programmation.
- Il souligne que l'exécution réussie d'un programme ne garantit pas la qualité de son code.
Un schrödinbug désigne une erreur informatique qui semble ne se manifester qu'au moment où un développeur examine le code source et réalise que celui-ci ne devrait logiquement pas fonctionner. C'est un bug qui reste endormi tant qu'on ignore son existence, mais qui devient bloquant dès qu'on l'identifie.
Étymologie
Mot-valise formé à partir du nom du physicien Erwin Schrödinger et du terme bug (erreur). Il fait référence à la célèbre expérience de pensée du « Chat de Schrödinger » en physique quantique, où un chat est considéré comme à la fois mort et vivant tant qu'on n'a pas ouvert la boîte pour l'observer.
Exemples d'usage
- Un programme qui utilise une variable non initialisée et qui fonctionne par pur hasard depuis des mois, jusqu'au jour où un développeur remarque l'oubli et que le programme se met soudainement à planter.
- Une fonction qui dépend d'un fichier externe supprimé depuis longtemps, mais qui continuait de s'exécuter correctement par un mécanisme de cache inattendu jusqu'à ce qu'on examine son code.
Cas d'usage
Ce concept intervient principalement dans la maintenance de vieux logiciels (legacy code) ou lors d'audits de sécurité, quand une analyse approfondie révèle des failles ou des erreurs de logique qui auraient dû empêcher le système de fonctionner depuis le début.
Bonnes pratiques
Pour éviter ces situations absurdes, il est recommandé d'utiliser des outils d'analyse statique de code qui détectent les erreurs logiques avant même l'exécution. Ne vous fiez jamais au fait qu'un programme « semble marcher » si la logique interne est fausse.
Synonymes
Antonymes
Conseil
Si vous tombez sur un tel bug, ne remettez pas en cause votre santé mentale. Cela signifie souvent que votre programme fonctionnait grâce à un effet de bord ou une chance statistique (comme une zone mémoire restée propre par miracle) qui a fini par s'estomper.
Questions fréquentes
Le schrödinbug est-il réel ou imaginaire ?
Il est réel au sens où une erreur de logique peut être masquée par des conditions environnementales instables, et sa découverte coïncide souvent avec un changement de contexte qui le rend visible.
Quelle est la différence avec un Heisenbug ?
Un Heisenbug disparaît quand on essaie de l'étudier, tandis qu'un schrödinbug n'apparaît que lorsqu'on découvre qu'il devrait être là.