Mix ten years later

The first article reporting a running nontrivial self-applicable partial evaluator appeared in1985 [18]. It described the results of one year's intense work done by Peter Sest oft, Har-ald S@ndergaard, and myself at D IKU; work which has since led to much activity worldwide. Its significance was that it for the fist time demonstrated in practice the feasibility of generating both compilers and a compiler generator by self-application of a partial evaluator: a possibility which had been foreseen in principle by Yoshihiki Futamura in 1971, and independently by others soon after. Partial evaluation is undergoing rapid expansion in many places in the world, with a continuing stream of new techniques , applications and even fundamental insights. This paper gives my view of some important developments that have taken place within this field over the past decade. Other researchers may well have different versions reflecting their own philosophical visions and emphases, so this paper should be taken as " the truth, the whole truth, and my version of the truth. " Parts of it are adapted from [6]. automatic and mechanical treatment of programs is needed to lift software development above its current state. The promise of PE is just this: its ability to lift parts of program development to a highly automated, near-industrial process, where human creativity and even human comprehension of individual programs is only occasionally required: when high level computational decisions are to be taken. 1 About partial evaluation Partial evaluation (PE for short) is program specialization. Its aim is to use the computer to make programs run faster, in effect mechanically trading off program gen erahty in order to gain eficiencg. In the beginning PE was just an intellectual curiosity; but has since evolved into an automatic tool for program transformation and optimization that arguably should be part of a " programming workbench ". In the past decade interest and activity in PE has grown very rapidly. Essentially similar concepts are regularly rein-vented in different places and subfields of Computer Science — a sure sign of an emerging significant body of ideas. Pratt ical potential. Itis unfortunate that programming can be described, not unjustly, as a cottage industry: as much of a handcraft as knitting, and with very lzttle in the way of machinery. Programming requires enormous amounts of human work to write, to maintain, and to adapt programs. This labor intensive practice was aptly described at the …

[1]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[2]  Jesper Jørgensen,et al.  Generating a compiler for a lazy language by partial evaluation , 1992, POPL '92.

[3]  Andrew A. Berlin,et al.  Compiling scientific code using partial evaluation , 1990, Computer.

[4]  Valentin F. Turchin,et al.  The concept of a supercompiler , 1986, TOPL.

[5]  Neil D. Jones Constant time factors do matter , 1993, STOC '93.

[6]  Robert Glück,et al.  Towards Unifying Partial Evaluation, Deforestation, Supercompilation, and GPC , 1994, ESOP.

[7]  Dan Sahlin,et al.  The Mixtus Approach to Automatic Partial Evaluation of Full Prolog , 1990, NACLP.

[8]  David A. Schmidt,et al.  Compiler generation from denotational semantics , 1980, Semantics-Directed Compiler Generation.

[9]  Neil D. Jones,et al.  A partial evaluator for the untyped lambda-calculus , 1991, Journal of Functional Programming.

[10]  Mads Tofte,et al.  Compiler Generators: What They Can Do, What They Might Do, and What They Will Probably Never Do , 1990 .

[11]  Neil D. Jones Semantics-Directed Compiler Generation: Proceedings , 1980 .

[12]  Dines Bjørner,et al.  Partial Evaluation and Mixed Computation: Proceedings of the IFIP TC2 Workshop, Gammel Avernaes, Denmark, 18-24 Oct., 1987 , 1988 .

[13]  Robert Glück,et al.  Partial Evaluation of Numerical Programs in Fortran , 1994, PEPM.

[14]  Andrei P. Ershov,et al.  Mixed Computation: Potential Applications and Problems for Study , 1982, Theor. Comput. Sci..

[15]  Robert Glück,et al.  Occam's Razor in Metacompuation: the Notion of a Perfect Process Tree , 1993, WSA.

[16]  Chris Goad,et al.  Automatic Construction of Special Purpose Programs , 1982, CADE.

[17]  John Launchbury,et al.  Projection factorisations in partial evaluation , 1991 .

[18]  Charles Consel,et al.  New Insights into Partial Evaluation: the SCHISM Experiment , 1988, ESOP.

[19]  Karel De Vlaminck,et al.  Partial Evaluation of Polymorphically Typed Functional Languages: the Representation Problem , 1991, JTASPEFT/WSA.

[20]  Peter Sestoft,et al.  An experiment in partial evaluation: the generation of a compiler generator , 1985, SIGP.

[21]  Corin A. Gurr,et al.  A self-applicable partial evaluator for the logic programming language Goedel , 1994 .

[22]  Anders Bondorf,et al.  Automatic Autoprojection of Recursive Equations with Global Variables and Abstract Data Types , 1991, Sci. Comput. Program..

[23]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1990, Theor. Comput. Sci..