|
Abstract : |
Reflection is a property of application development systems which permits programs to change their own behaviour. Linguistic reflection is a variety in which this is carried out by extending the program with extra modules which are created, compiled and linked in by the program itself. With run-time reflection this happens during the running of the program. Typically this occurs by including commands in the program to create the new module as a string and then call either the compiler or interpreter for the language to create an executable form. When combined with persistence, the executable code can then be stored for reuse. However, writing programs which exploit reflection can be a daunting task, since keeping track of multiple representations of a program can involve copious amounts of intricate string manipulation. This paper sets out to analyse some of the issues which make for difficulty, to outline some support tools which have been created and then to discuss the possibilities of an underlying language-independent theory for reflection. 1, |