This essay accompanies a selection of 32 articles (referred to in bold face in the text and marked with " √ " in the bibliographic references) submitted to the University of Aarhus towards a Doctor Scientiarum degree in Computer Science. The author's previous academic degree, beyond a doctoral degree in June 1986, is an Habilitationà diriger les recherches from the Université Pierre et Marie Curie (Paris VI) in France; the corresponding material was submitted in September 1992 and the degree was obtained in January 1993. The present 32 articles have all been written since 1993 and while at DAIMI. Except for one other PhD student, all co-authors are or have been the author's students here in Aarhus. *
Technical summaryThis work presents an analytical approach to programs as data objects, i.e., to programs whose representation is operated upon by other programs. The approach is analytical in that a variety of program manipulations is considered and their impact on program understanding, design, and efficiency is measured.Most of the programs considered here are language processors, i.e., programs interpreting, translating, or transforming other programs. As for the program manipulations, they concern block structure and lexical scope, the representation of functions at run time, and the representation of control.ii
Teknisk résuméDette arbejde praesenterer en analytisk tilgang til programmer som dataobjekter, dvs, til programmer hvis repraesentation bliver behandlet af andre programmer. Tilgangen er analytisk i og med at et udvalg af programmanipulationer bliver betragtet og deres indflydelse på program-forståelse, -design og -effektivitet bliver vurderet.De fleste programmer, der betragtes her, er sprogbehandlingsprogrammer, dvs, programmer der fortolker, oversaetter eller transformerer andre programmer. Hvad angår programmanipulationerne, vedrører de blokstruktur og leksikalsk virkefelt, repraesentation af funktioner på køretidspunktet og repraesentation af kontrol.iii