Methods of Reflection
From TunesWiki
Introduction
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.
Glossary References
- Meta-
- Meta-Circular
- Meta-Level
- Meta-Object
- Meta-Object Protocol
- Metaprogramming
- Open Implementation
- Partial Evaluation
- Reflection
- Reflective Tower
- Reification
Foundations
See Kurt Gödel, Alan Turing, Douglas Hofstadter (see below).
"John Tromp's" universal machine. The Principia Cybernetica project.
Metalogical Reflection
Self-References
Run-time Computational Reflection
Brian C. Smith, Patti Maes, A. Yonezawa.
Compile-Time (Computational) Reflection
Shigeru Shiba, Tim Sheard, Rowan Davies.
Partial Evaluation
Olivier Danvy & Andrzej Filinski at BRICS; Neil D. Jones at DIKU; Charles Consel and Gilles Muller at IRISA (COMPOSE group); at OGI.
Erik Ruf's PhD thesis on PE. PE courses have been taught using his dissertation.
- Semantics-based Program Analysis and Maipulation
- PEPM'97: Partial Evaluation and Semantic-based Program Manipulation
- cmix
- FUSE
Run-Time Code Generation
Reflective Expert Systems
Jacques Pitrat and his team. Self Reflection in Cognitive Architectures.
Reflective Concurrent Programming
José Meseguer; "Carol Talcott"; A. Yonezawa;
Meta-Object Protocols
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.
Aspect-Oriented Programming
Reasoning Systems
Reflective Programming Languages
Intel's hardware design language Reflect has some interesting features : see
http://web.comlab.ox.ac.uk/oucl/work/tom.melham/res/reflect.html