À retenir
- C'est le stade actif de la réflexion informatique.
- Permet de changer le code ou le comportement en plein vol.
- Indispensable pour créer des outils et frameworks très flexibles.
L'intercession est la capacité d'un programme informatique à modifier son propre comportement, sa structure ou ses données internes pendant qu'il est en train de s'exécuter. C'est comme si un robot en marche décidait de remplacer l'un de ses propres circuits ou d'ajouter une nouvelle fonctionnalité à son système sans jamais s'arrêter.
Étymologie
Le terme provient du latin intercedere, qui signifie « s'interposer » ou « intervenir ». En informatique, il s'agit d'un des deux piliers de la réflexion (avec l'introspection) : là où l'introspection permet de s'observer, l'intercession permet d'agir sur soi-même.
Exemples d'usage
- Le Monkey Patching en Python ou Ruby, qui consiste à modifier ou ajouter des méthodes à une classe déjà existante pendant l'exécution.
- L'utilisation de l'objet
Proxyen JavaScript pour intercepter et modifier le comportement fondamental d'un autre objet (comme la lecture ou l'écriture d'une propriété). - L'injection de dépendances dynamique qui modifie la logique d'un service à la volée.
Cas d'usage
On utilise l'intercession principalement dans la métaprogrammation, la création de frameworks (pour automatiser des tâches répétitives), le développement d'outils de débogage avancés ou pour appliquer des correctifs de sécurité à chaud (hot-patching) sans redémarrer une application critique.
Bonnes pratiques
L'intercession est un outil extrêmement puissant mais risqué. Elle doit être utilisée avec parcimonie car elle peut rendre le code difficile à lire, à tester et à maintenir. Un programme qui se modifie lui-même peut devenir imprévisible pour les autres développeurs qui ne voient pas les changements s'opérer dans le code source original.
Synonymes
Antonymes
Conseil
Si vous débutez, considérez l'intercession comme un « mode Dieu ». Avant de modifier dynamiquement votre code, demandez-vous si une structure classique (comme le polymorphisme ou des conditions simples) ne suffirait pas, afin de garder votre application compréhensible.
Questions fréquentes
Quelle est la différence entre introspection et intercession ?
L'introspection permet seulement d'examiner l'état du programme (lire), tandis que l'intercession permet de le modifier (écrire).
Est-ce disponible dans tous les langages ?
Non, c'est une caractéristique surtout présente dans les langages dynamiques (Python, Ruby, JavaScript, Smalltalk). Les langages très rigides comme le C en sont incapables nativement.