The current growing interest in supercomputers will undoubtedly give rise to the question of how to program on such machines. One obvious answer is with supercompilers! We define supercompilers as highly automated transformational programming systems that can translate high level mathematical problem specifications into machine code for a variety of target computers that could be represented by a diversity of abstract parallel and sequential complexity models. Since one would not expect the object code produced by a supercompiler to be comprehensible relative to the abstractly specified source code, a reasonable supercompiler would have to compile a performance description of the object code also. This is made possible by new insights into the basic nature of what a variable is, and a careful integration of performance with semantics. A new general top down framework is provided to facilitate powerful transformations, which can be adapted for both sequential and parallel models, and are applied in a sequence of steps to implement strategy, access paths and invariants, conventional storage structures, and other essential features of efficient programs. Some of these transformations based on fixed point theory are new, while others are improved variants of previous investigations. Our concepts and techniques are illustrated using RAPTS, a running transformational programming system that embodies many of the features found in our notion of supercompilers.
R. Paige, "Supercompilers," Program Transformation and Programming Environments: NATO ASI Series, Springer Verlag, Jan 1984.
The definitive version is available at http://dx.doi.org/10.1007/978-3-642-46490-4_29
Mathematics and Statistics
Article - Journal
© 1984 Springer Verlag, All rights reserved.