Reflexió (informàtica): diferència entre les revisions
Contingut suprimit Contingut afegit
m Robot afegeix: nl:Reflectie (informatica) |
m Correcció lingüística i millora del format. |
||
Línia 1:
En [[informàtica]], la '''reflexió''' (també anomenada pel seu mot anglès, '''''reflection''''') és la capacitat d'un programa d'examinar, i eventualment modificar, les seves estructures internes d'alt nivell (per exemple els seus
== Introspecció i intercessió ==
Hom
* La '''
* La '''
La introspecció és utilitzada per efectuar mesures de rendiment,
La intercessió permet a un programa evolucionar automàticament en funció del seu entorn. Aquesta propietat apareix als llenguatges com
== Reflexió estructural i reflexió comportamental ==
Paral·lelament al concepte d'introspecció i d'intercessió, hi ha dos tipus de reflexió : la reflexió estructural i la reflection comportamental.▼
▲Paral·lelament al concepte d'introspecció i d'intercessió, hi ha dos tipus de reflexió
La '''reflexió estructural''' consisteix en [[Reificació|reificar]] el codi d'un programa i tots els [[Tipus abstracte |tipus abstractes]] accessibles per aquest programa. Al primer cas, la reificació del codi d'un programa permet de manipular aquest programa durant l'execució. És possible així de mantenir un programa al mateix temps que aquest executa les seves tasques. Al segon cas, la reificació dels tipus abstractes permet al programa d'examinar i de modificar l'estructura de tipus complexos. Es pot així, per exemple, posar a punt algorismes genèrics de [[serialització]].▼
▲La '''reflexió estructural''' consisteix
La '''reflexió comportamental''' (o reflexió de comportament) concerneix més particularment l'execució del programa i el seu entorn. Per aquest tipus de reflexió, un programa té mitjans per sabercom s'interpreta i té la possibilitat de modificar la seva manera de ser executat, intervenint sobre les estructures de dades de l'avaluador del programa i sobre l'avaluador en sí mateix. Així, el programa pot obtenir informacions sobre la seva implementació o inclús s'auto-reorganitza amb el propòsit d'adapatar-se millor al seu « entorn ».▼
▲La '''reflexió comportamental''' (o reflexió de comportament) concerneix més particularment l'execució del programa i el seu entorn. Per aquest tipus de reflexió, un programa té mitjans per
== Reflexió i programmació orientada a objectes ==▼
En [[programació orientada a objectes]], l'arquitectura reflexiva està implementada pel concepte dels [[Metaobjecte|metaobjectes]]. Aquests representent elements dles programes orientats a objectes com les classes, els missatges i les funcions genèriques. La manipulació d'aquests metaobjectes es fa per un [[protocol de meta-objectes]] que permet de decidir els comportements del llenguatge. [[CLOS]] ha estat el primer llenguatge a tenir implementat un protocol de meta-objectes.▼
▲En [[programació orientada a objectes]], l'arquitectura reflexiva està implementada pel concepte dels [[
== Llenguatge reflexiu ==
Els llenguatges següents suporten la reflexió
* [[
* [[CLOS]]
* [[Python]]
Linha 34 ⟶ 35:
* [[Objective-C]]
* [[PHP]], des de la versió 5
* els llenguatges que funcionen
Entre els llenguatges on no hi ha distinció entre la compilació i l'execució ([[Lisp]] per exemple), no hi ha diferència entre la interpretació del
== Exemple ==
L'exemple següent està escrit en [[Llenguatge Java|Java]] :
<source lang="Java">
foo.hello();
</source>
<source lang="Java">
method.invoke(cl.newInstance(), null);
</source>
Els dos trossos de codi creen una instància de la classe ''Foo'' i criden el seu
Al primer programa, el nom de les classes i els mètodes està codificat en cru, no es pot usar el nom d'una altra classe. Al segon programa,
== Bibliografia ==
Linha 66 ⟶ 71:
* [[Reificació]]
* [[Metaobjecte]]
* [[Protocol dels
[[Categoria:Programació]]
|