Introspection

Définition, exemples et bonnes pratiques

À retenir

  • Permet au code de connaître sa propre structure en temps réel.
  • Essentiel pour créer des outils flexibles et dynamiques.
  • Souvent confondu avec la réflexion (qui permet en plus de modifier le code).

L'introspection est la capacité d'un programme informatique à s'examiner lui-même pendant qu'il fonctionne. C'est comme si un logiciel pouvait se regarder dans un miroir pour découvrir ses propres caractéristiques, comme la liste de ses fonctions, ses variables ou son type de données.

Étymologie

Issu du latin intro (dedans) et spicere (regarder). Initialement utilisé en psychologie pour désigner l'analyse de ses propres pensées, le terme a été adopté en informatique pour décrire un code capable d'analyser sa propre structure interne au moment de son exécution.

Exemples d'usage

  • En Python, utiliser la fonction type(objet) pour connaître la nature d'une donnée ou dir(objet) pour lister toutes ses méthodes disponibles.
  • En JavaScript, utiliser l'opérateur typeof pour vérifier si une variable contient un nombre, une chaîne de caractères ou un objet.
  • Vérifier si une classe possède une méthode spécifique avant de tenter de l'appeler pour éviter que le programme ne plante.

Cas d'usage

On l'utilise principalement dans le développement d'outils de débogage, dans la création de frameworks qui doivent manipuler des objets dont ils ne connaissent pas la structure à l'avance (comme les systèmes qui transforment automatiquement une base de données en code), ou pour générer de la documentation automatique.

Bonnes pratiques

Bien que puissante, l'introspection doit être utilisée avec parcimonie car elle peut ralentir l'exécution du programme. Il est souvent préférable de s'appuyer sur une structure de code claire (interfaces, types) plutôt que de demander au programme de deviner sa propre structure en permanence. C'est un outil précieux pour la flexibilité, mais un piège pour la performance si on en abuse.

Synonymes

auto-examen analyse de type dynamique

Antonymes

extrospection analyse statique

Conseil

Si vous débutez, voyez l'introspection comme une loupe qui vous permet de voir ce qu'il y a 'sous le capot' d'un objet que vous manipulez. C'est très utile dans la console de commande (REPL) pour explorer une nouvelle bibliothèque logicielle.

Questions fréquentes

Quelle est la différence entre introspection et réflexion ?

L'introspection permet uniquement d'examiner le code (lire), tandis que la réflexion permet d'aller plus loin en modifiant la structure ou le comportement du programme pendant qu'il tourne (écrire).

Est-ce que tous les langages permettent l'introspection ?

Non, elle est surtout présente dans les langages dits 'dynamiques' ou 'interprétés' comme Python, JavaScript ou Java. Les langages très bas niveau comme le C ont beaucoup plus de mal à s'auto-examiner une fois compilés.