Reflexion y metaprogramacion

Enviado por Programa Chuletas y clasificado en Otras materias

Escrito el en español con un tamaño de 4,94 KB

 
Reflexión
La reflexión es una propiedad que permite representar el estado de los objetos de un sistema como entidades de primera clase, y por tanto poder observarlos, manipularlos y razonar sobre ellos como elementos básicos. Fundamentalmente hay dos tipos de reflexión: la lógica y la computacional.
2.1 La r eflexión l ógica se aplica sobre los marcos formales lógicos de razonamiento, y permite a sus módulos ser accesibles como entidades de primera clase, de forma que operaciones como la composición o la transformación de módulos pueden ser definidas rigurosamente en la lógica y por tanto ser también ejecutadas.
2.2 Reflexión c omputacional se entiende la habilidad de una entidad software de conocer
o modificar su estado. A la primera forma se
le denomina
reflexión estructural, y a la
segunda
reflexión de comportamiento
2.2.1 La reflexión estructural es la capacidad de un objeto de inspeccionar sus miembros (métodos y atributos), más la capacidad de incluso cambiarlos, en tiempo de ejecución.
Metaprogramación
La metaprogramación consiste en escribir programas que escriben o manipulan otros programas (o a sí mismos) como datos, o que hacen en tiempo de compilación parte del trabajo que, de otra forma, se haría en tiempo de ejecución. Esto permite al programador ahorrar tiempo en la producción de código.
La herramienta de metaprogramación más común es el compilador, el cual permite al programador escribir un programa relativamente corto en un lenguaje de alto nivel . A la programación que utiliza técnicas de reflexión se le denomina Metaprogramación y es la fuente de numerosos modelos de objetos que persiguen un tratamiento separado de los distintos requisitos de una aplicación. De entre todos
ellos mencionaremos
· el modelo de Filtros Composicionales
de M. Aksit
· el modelo de capas LayOM de Jan
Bosch
· la Programación Orientada a
Aspectos e George Kiczales y el
grupo de Xerox.
Programación Orientada a Aspectos se basa en descomponer los programas en diferentes
aspectos, encargándose cada uno de estos
aspectos de un requisito independiente del programa (prestaciones, seguridad, concurrencia, fiabilidad), y pudiendo estar desarrollado de forma separada de los demás, incluso en lenguajes diferentes La metaprogramación lógica de aspectos se basa en la utilización de lenguajes meta lógicos para razonar sobre aspectos, unificando el lenguaje para declarar aspectos con el lenguaje para implementar el tejedor.
La principal ventaja de utilizar hechos lógicos para declarar aspectos en vez de un lenguaje de aspectos diseñados especialmente es que
las declaraciones de aspectos se pueden acceder y declarar por reglas lógicas. Esta técnica permite al usuario adaptar o extender el lenguaje de aspectos.
Metaprogramación con marcos en c
Una forma de metaprogramación es la creación de macros para cambiar el códigofuente y crear nuevas funcionalidades. Esta
caracteristica puede ser catalogada como programación generativa o metaprogramación textual. Ha sido utilizada desde los principios
de C, definida como el lenguaje de macros que este utiliza.
Metaprogramación en C++ con macros
La metaprogramación se define como codificar programas que a su vez codifican otros programas (de ahí el meta), y aunque
suena un poco extraño, y se podría entender cómo si en matrix las máquinas estuvieran programando programas en realidad el uso práctico de la metaprogramación es ahorrar tiempo, mucho tiempo
Los Quines
Los Quines son programas cuyo objetivo es imprimirse a sí mismos, es decir, una aplicación que imprime en pantalla su propio
código de fuente. Para muchos programadores, es un juego bastante entretenido intentar programar un quine lo más corto posible en un lenguaje determinado
Decorador (patrón de diseño)
El patrón Decorator responde a la necesidad de añadir dinámicamente funcionalidad a un Objeto. Esto nos permite no tener que crear
sucesivas clases que hereden de la primera incorporando la nueva funcionalidad, sino otras que la implementan y se asocian a la primera.


Entradas relacionadas: