Abstract
Reflective systems allow their own structures to be altered from within. In a programming system reflection can occur in two ways: by a program altering its own interpretation or by it changing itself. Reflection has been used to facilitate the production and evolution of data and programs in database and programming language systems. This paper is concerned with a particular style of reflection, called linguistic reflection, used in compiled, strongly typed languages. Two major techniques for this have evolved: compile-time reflection and run-time reflection. These techniques are described together with a definition and anatomy of reflective systems using them. Two illustrative examples are given and the uses of type-safe reflective techniques in a database programming language context are surveyed. These include attaining high levels of genericity, accommodating changes in systems, implementing data models, optimising implementations and validating specifications.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Burstall RM, Collins JS, Popplestone RJ. Programming in POP-2. Edinburgh University Press, Edinburgh, Scotland, 1971.
Rees J, Clinger W. Revised Report on the Algorithmic Language Scheme. ACM SIGPLAN Notices 1986; 21,12:37–43.
Sheard T. A user′s Guide to TRPL: A Compile-time Reflective Programming Language. COINS, University of Massachusetts Report 90–109, 1990.
PS-algol. PS-algol Reference Manual, 4th edition. Universities of Glasgow and St Andrews Report PPRR-12–88, 1988.
Morrison R, Brown AL, Connor RCH, Dearie A. The Napier88 Reference Manual. Universities of Glasgow and St Andrews Report PPRR-77–89, 1989.
Codd EF. Extending the Relational Model to Capture More Meaning. ACM Transactions on Database Systems 1979; 4,4:397–434.
Jaeschke G, Schek HJ. Remarks on the Algebra of Non First Normal Form Relations. In: Proc. 1st Symposium on the Principles of Database Systems, 1982, pp 124–138.
Dearie A, Brown AL. Safe Browsing in a Strongly Typed Persistent Environment. Computer Journal 1988; 31,6:540–544.
Dearie A, Cutts QI, Kirby GNC. l. In: Rosenberg J, Koch DM (ed) Persistent Object Systems, Proc. 3rd International Workshop on Persistent Object Systems, Newcastle, Australia 1989. Springer-Verlag, 1990, pp 56–69.
Cardelli L. Amber. In: Lecture Notes in Computer Science 242. Springer-Verlag, 1986, pp 21–47.
Kirby GNC, Dearie A. An Adaptive Graphical Browser for Napier88. University of St Andrews Report CS/90/16, 1990.
Sheard T. Automatic Generation and Use of Abstract Structure Operators. ACM Transactions on Programming Languages and Systems 1991; 19,4:531–557.
Cooper RL. On The Utilisation of Persistent Programming Environments. Ph.D. thesis, University of Glasgow, 1990.
Kirby GNC. Persistent Programming with Strongly Typed Linguistic Reflection. In: Proc. 25th International Conference on Systems Sciences, Hawaii, 1992, pp 820–831.
Strachey C. Fundamental Concepts in Programming Languages. Oxford University Press, Oxford, 1967.
Stemple D, Fegaras L, Sheard T, Socorro A. Exceeding the Limits of Polymorphism in Database Programming Languages. Springer-Verlag, 1990, pp 269–285.
Cooper RL. Configurable Data Modelling Systems. In: Proc. 9th International Conference on the Entity Relationship Approach, Lausanne, Switzerland, 1990, pp 35–52.
Cooper RL, Qin Z. A Graphical Data Modelling Program With Constraint Specification and Management. In: Proc. 10th British National Conference on Databases, Aberdeen, 1992, pp 192–208.
Bruynooghe RF, Parker JM, Rowles JS. PSS: A System for Process Enactment. In: Proc. 1st International Conference on the Software Process: Manufacturing Complex Systems, 1991.
Greenwood RM, Guy MR, Robinson DJK. The Use of a Persistent Language in the Implementation of a Process Support System. ICL Technical Journal 1992; 8,1:108–130.
Warboys B. The IPSE 2.5 Project: Process Modelling as the Basis for a Support Environment. In: Proc. 1st International Conference on System Development Environments and Factories, Berlin, Germany, 1989.
Philbrow PC. Indexing Strongly Typed Heterogeneous Collections Using Reflection and Persistence. In: Proc. ECOOP/OOPSLA Workshop on Reflection and Metalevel Architectures in Object-Oriented Programming, Ottawa, Canada, 1990.
Cooper RL, Atkinson MP, Dearie A, Aderrahmane D. Constructing Database Systems in a Persistent Environment. In: Proc. 13th International Conference on Very Large Data Bases, 1987, pp 117–125.
Fegaras L, Stemple D. Using Type Transformation in Database System Implementation. In: Kanellakis P, Schmidt JW (ed) 3rd International Conference on Database Programming Languages, Proc. 3rd International Workshop on Database Programming Languages, Nafplion, Greece. Morgan Kaufmann, 1991, pp 337–353.
Fegaras L, Sheard T, Stemple D. Uniform Traversal Combinators: Definition, Use and Properties. In: Proc. 11th International Conference on Automated Deduction (CADE-11), Saratoga Springs, New York, 1992. LNAI 607, pp. 148–162.
Stemple D, Sheard T, Fegaras L. Linguistic Reflection: A Bridge from Programming to Database Languages. In: Proc. 25th International Conference on Systems Sciences, Hawaii, 1992, pp 844–855.
Sheard T, Stemple D. Automatic Verification of Database Transaction Safety. ACM Transactions on Database Systems 1989; 12,3:322–368.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2000 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Stemple, D. et al. (2000). Type-Safe Linguistic Reflection: A Generator Technology. In: Atkinson, M.P., Welland, R. (eds) Fully Integrated Data Environments. Esprit Basic Research Series. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-59623-0_8
Download citation
DOI: https://doi.org/10.1007/978-3-642-59623-0_8
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-64055-1
Online ISBN: 978-3-642-59623-0
eBook Packages: Springer Book Archive