Reflexion (informatique)

Reflexion (informatique)

Réflexion (informatique)

Page d'aide sur l'homonymie Pour les articles homonymes, voir Réflexion et Réflexivité.

En programmation informatique, la réflexion est la capacité d'un programme à examiner, et éventuellement à modifier, ses structures internes de haut niveau (par exemple ses objets) lors de son exécution.

On appelle réflexivité le fait pour un langage de programmation de permettre l'écriture de tels programmes. Un tel langage de programmation est dit réflexif.

Sommaire

Introspection et intercession

On distingue deux techniques utilisées par les systèmes réflexifs :

  • l'introspection, qui est la capacité d'un programme à examiner son propre état.
  • l'intercession, qui est la capacité d'un programme à modifier son propre état d'exécution ou d'altérer sa propre interprétation ou signification.

L'introspection est utilisée pour effectuer des mesures de performance, inspecter des modules ou déboguer un programme. Elle est implémentée dans des langages comme Smalltalk ou Java qui fournissent des outils pour connaître la classe d'un objet, ses attributs, ses méthodes, etc. L'introspection n'existe pas dans des langages comme C ou Pascal.

L'intercession permet à un programme d'évoluer automatiquement en fonction des besoins et de l'environnement. Cette propriété apparaît dans des langages comme SmallTalk ou Python, mais elle n'existe pas dans des langages comme C.

Réflexion structurelle et réflexion comportementale

Parallèlement aux concepts d'introspection et d'intercession, il existe deux types de réflexion : la réflexion structurelle et la réflexion comportementale.

La réflexion structurelle consiste à réifier le code d'un programme et tous les types abstraits accessibles par ce programme. Dans le premier cas, la réification du code d'un programme permet de manipuler ce programme pendant l'exécution. Il est possible ainsi de maintenir un programme même lorsque celui-ci effectue des tâches. Dans le deuxième cas, la réification des types abstraits permet au programme d'examiner et de modifier la structure de types complexes. On peut ainsi, par exemple, mettre au point des algorithmes génériques de sérialisation.

La réflexion comportementale (ou réflexion de comportement) concerne plus particulièrement l'exécution du programme et l'environnement du programme. Par ce type de réflexion, un programme a moyen de savoir comment il est interprété et a la possibilité de modifier sa façon d'être exécuté, en intervenant sur les structures de données de l'évaluateur du programme et sur l'évaluateur lui-même. Ainsi, le programme peut obtenir des informations sur son implémentation ou même s'auto-réorganiser afin de s'adapter au mieux à un « environnement ».

Réflexion et programmation objet

En programmation orientée objet, l'architecture réflexive est implémentée par le concept des métaobjets. Ceux-ci représentent des éléments des programmes orientés objets comme les classes, les messages et les fonctions génériques. La manipulation de ces métaobjets se fait par un protocole à métaobjets qui permet de décider des comportements du langage. CLOS est le premier langage à avoir implémenté un protocole à méta-objets.

Langage réflexif

Les langages suivants supportent la réflexion :

Dans les langages où il n'y a pas de distinction entre la compilation et l'exécution (Lisp par exemple), il n'y a pas de différence entre l'interprétation du code et la réflexion.

Exemple

L'exemple suivant est écrit en Java :

// Sans utiliser la réflexion
Foo foo = new Foo ();
foo.hello ();
// En utilisant la réflexion
Class cl = Class.forName ("Foo");
Method method = cl.getMethod ("hello", null);
method.invoke (cl.newInstance (), null);

Les deux morceaux de code créent une instance de la classe Foo et appellent leur méthode hello.

Dans le premier programme, le nom des classes et des méthodes est codé en dur, il n'est pas possible d'utiliser le nom d'une autre classe. Dans le second programme, en revanche, le nom des classes et des méthodes peut varier à l'exécution.

Bibliographie

  • D. G. Bobrow, R. G. Gabriel, and J. L. White. Object oriented programming: the CLOS perpective. MIT Press, 1993.
  • G. Kickzales, J. des Rivières, and D. G. Bobrow. The art of the metaobject protocol. MIT Press, 1991.

Voir aussi

  • Portail de la programmation informatique Portail de la programmation informatique
Ce document provient de « R%C3%A9flexion (informatique) ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Reflexion (informatique) de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • Réflexion (Informatique) — Pour les articles homonymes, voir Réflexion et Réflexivité. En programmation informatique, la réflexion est la capacité d un programme à examiner, et éventuellement à modifier, ses structures internes de haut niveau (par exemple ses objets) lors… …   Wikipédia en Français

  • Réflexion (informatique) — Pour les articles homonymes, voir Réflexion et Réflexivité. En programmation informatique, la réflexion est la capacité d un programme à examiner, et éventuellement à modifier, ses structures internes de haut niveau (par exemple ses objets) lors… …   Wikipédia en Français

  • Informatique Musicale — L informatique musicale est une discipline qui comporte des aspects de synthèse sonore et d aide à la composition musicale. Dans les années 1950 1970, l essor de la technologie numérique des ordinateurs a chamboulé la composition musicale qui,… …   Wikipédia en Français

  • Reflexion — Réflexion Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Réflexion provient du mot latin reflexio qui signifie « action de tourner en arrière, de retourner ». [1] En mathématiques, la… …   Wikipédia en Français

  • Réflexion religieuse — Réflexion Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Réflexion provient du mot latin reflexio qui signifie « action de tourner en arrière, de retourner ». [1] En mathématiques, la… …   Wikipédia en Français

  • INFORMATIQUE ET SCIENCES HUMAINES - Le droit de l’informatique — Nombreuses sont aujourd’hui les interactions du droit et de l’informatique. Si l’informatique juridique documentaire devient indispensable au juriste qui doit apprendre à interroger les grandes banques de données, d’un autre côté, comme tout… …   Encyclopédie Universelle

  • INFORMATIQUE - Informatique et sciences de la vie — Les moyens de l’informatique ont considérablement progressé, non seulement par l’ampleur des données ou des problèmes qu’ils permettent de traiter, mais aussi par les facilités d’accès et de programmation; de plus le coût, à performances égales,… …   Encyclopédie Universelle

  • INFORMATIQUE - Formalisation et communication — L’information est partout présente dans notre existence. Les messages les plus variés ne cessent de nous parvenir de tous les points du globe, sous des formes de plus en plus diversifiées, au point que certains s’inquiètent de l’ampleur de ce… …   Encyclopédie Universelle

  • Intercession(informatique) — Réflexion (informatique) Pour les articles homonymes, voir Réflexion et Réflexivité. En programmation informatique, la réflexion est la capacité d un programme à examiner, et éventuellement à modifier, ses structures internes de haut niveau (par… …   Wikipédia en Français

  • Introspection (informatique) — Réflexion (informatique) Pour les articles homonymes, voir Réflexion et Réflexivité. En programmation informatique, la réflexion est la capacité d un programme à examiner, et éventuellement à modifier, ses structures internes de haut niveau (par… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”