scispace - formally typeset
Open AccessBook

Improving programs by source-to-source transformation

TLDR
A program manipulation system which speeds up Lisp programs by rewriting them, and was applied to a number of programs, which had execution speeds ten to fifty per cent faster than the originals.
Abstract
: This report describes a program manipulation system which speeds up Lisp programs by rewriting them The system can read in programs and input test sets, run the program in a controlled fashion, and propose and carry out changes to the program which may result in faster execution and better algorithms Improvements fall into two categories: those based solely on the program text, and those which use information learned from running the program Changes are tested for correctness (program gives the same answers) and effectiveness (actually speeds the program up) Discussed in the thesis are the programmable language-oriented editor which carries out transformation commands, the library of patterns used to organize program transformations, a data and control flow analysis routine, and tools for investigating the dynamic behavior of programs One section is devoted to a discussion of the controversy surrounding the area of program proving, and gives arguments in support of the programmer-aided program testing techniques used in the transformation system The system was applied to a number of programs, ranging in size from single functions to large programs twenty-five pages in length The improved programs had execution speeds ten to fifty per cent faster than the originals (Author)

read more

Citations
More filters
Journal ArticleDOI

Program Transformation Systems

TL;DR: This paper reviews and classifies transformation systems and is intended to acquaint the reader with the current state of the art and provide a basis for comparing the different approaches.

Software construction using components

TL;DR: It is the thesis of this work than many computer software systems being built today are similar and should be built out of reusable software components and the appropriate use of software components is investigated by analogy to the classical engineering question of whether to build an object out of custom-made parts or standard parts and assemblies.