Type-Safe Linguistic Run-time Reflection - A Practical Perspective

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]  Ronald Cooper On the Utilisation of Persistent Programming Environments , 1989 .

[2]  Richard Cooper,et al.  Configuring Database Query Languages , 1994, IDS.

[3]  Richard C. H. Connor,et al.  START: A Linguistic Reflection Tool Using Hyper-Program Technology , 1994, POS.

[4]  Malcolm P. Atkinson,et al.  Design Issues in a Map Language , 1992, DBPL.

[5]  Professor Dr. Niklaus Wirth,et al.  Programming in Modula-2 , 1982, Springer Berlin Heidelberg.

[6]  Tim Sheard,et al.  Automatic generation and use of abstract structure operators , 1991, TOPL.

[7]  Rod M. Burstall,et al.  Programming in POP-2 , 1971 .

[8]  Richard Cooper,et al.  Configurable Data Modelling Systems , 1990, ER.

[9]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[10]  Richard C. H. Connor,et al.  Types and polymorphism in persistent programming systems , 1991 .

[11]  François Bancilhon,et al.  Building an Object-Oriented Database System, The Story of O2 , 1992 .

[12]  Alan Dearle,et al.  Safe Browsing in a Strongly Typed Persistent Environment , 1988, Comput. J..

[13]  Ronald Morrison,et al.  An Approach to Persistent Programming , 1989, Comput. J..

[14]  Graham N. C. Kirby,et al.  Persistent programming with strongly typed linguistic reflection , 1992, Proceedings of the Twenty-Fifth Hawaii International Conference on System Sciences.

[15]  François Bancilhon,et al.  The O2 object-oriented database system , 1992, SIGMOD '92.

[16]  Richard Cooper,et al.  Constructing Database Systems in a Persistent Environment , 1987, VLDB.

[17]  Richard Cooper,et al.  A Generic Data Model for the Support of Multiple User Interaction Facilities , 1994, ER.

[18]  Michael Stonebraker,et al.  DBMS Research at a Crossroads: The Vienna Update , 1993, VLDB.