Methods of Reflection
Reflection is the ages old concept of someone thinking about oneself. Yes, there are other meanings to the word; this is the one we consider here. In Computer Science, Reflection is a powerful conceptual tool with such various applications as simplifying logical proofs enough to make them physically tractable, enabling dynamic (run-time) evolution of programming systems, transforming programs statically (at compile-time) to add and manage such features as concurrency, distribution, persistence, or object systems, or allowing expert systems to reason about and adapt their own behavior.
- Meta-Object Protocol
- Open Implementation
- Partial Evaluation
- Reflective Tower
Run-time Computational Reflection
Compile-Time (Computational) Reflection
- Semantics-based Program Analysis and Maipulation
- PEPM'97: Partial Evaluation and Semantic-based Program Manipulation
Reflective Expert Systems
Jacques Pitrat and his team. Self Reflection in Cognitive Architectures.
Reflective Concurrent Programming
A classic book, AMOP.
A recent small project in Squeak by Henrik Gedenryd to develop a "Universal Composition" system for programs. It essentially involves a graph of meta-objects describing source-composition operations which can be eagerly or lazily (statically or dynamically) driven, resulting in partial evaluation or forms of dynamic composition such as AOP. He provides a demonstration Squeak image and a rough draft paper.
Intel's hardware design language Reflect has some interesting features : see