Tribute to a Great Meta-Technologist —from Centaur to The Meta-Environment— Paul Klint Software Engineering Department of Centrum voor Wiskunde en Informatica (CWI), and Informatics Institute, University of Amsterdam www.cwi.nl/˜paulk March 6, 2008 Abstract Gilles Kahn was a great colleague and good friend who has left us much too early. In this paper I will sketch our joint research projects, the many discussions we had, some personal recollections, and the influence these have had on the current state-of-the-art in meta-level language technology. 1 Getting acquainted Bˆ atiment 8. On a sunny day in the beginning of July 1983 I parked my beige Citroen Dyane on the parking lot in front of Bˆ atiment 8, INRIA Rocquencourt. At the time, the buildings made the impression that the US military who had constructed the premises in Rocquencourt were also the last that had ever used the paint brush. Inside, lived an energetic research family and I was hosted by project CROAP headed by Gilles Kahn. My roommates Veronique Donzeau-Gouge and Bertrand M´ el` ese helped me find a bureau in a corner in the cramped building and helped to set up a Multics account on the Honeywell-Bull mainframe. After some flirtations with computer graphics, software portability and the Unix operating system, I turned to the study of string processing languages on which I wrote a PhD in 1982 [55]. The main topic was the Summer programming language [52] that featured objects, success/failure driven control flow, string matching and composition, and a “try” mechanism that allowed the execution of an arbitrary sequence of statements and would undo all side effects in case this execution resulted in failure. As part of this work, I got attracted to the question of how the semantics of such languages could be defined [53]. The approach I used was a meta-circular language definition that covered both syntax and semantics. However, this definition was written after the actual implementation had already been completed. Would it not be great if a language definition could be used to generate an efficient language implementation? As described in more detail in [44], Jan Heering and I started the design of a dedicated programming environment for the Summer programming language. This led us to the notion of a monolingual program- ming environment [43] in which the various modes of the environment such as programming, command line execution and debugging were all done in the same language. We were aware of the formidable im- plementation effort of such a system for a specific language and, in addition to this, Summer had never 1