A general purpose production compiler faces many diverse and demanding tasks. It must obviously accept the full source language---including all rarely used and difficult to compile features; it must produce efficient object code; it must be prepared to accept very large and long programs---and accept them in pieces to be integrated later. It is obvious that by yielding on some of these requirements, and by sacrificing generality for efficiency for a particular class of program or user, improved compiler performance should be obtainable. One large and important class of users are those just learning the language. Their programs are typically short, submitted all at once, and require only a modest subset of the language. They need to be compiled repeatedly to eliminate errors, and are often discarded as soon as they execute properly. In general, their execution time is very small relative to the total compilation time. It should also be noted that such programs occur in tremendous numbers since classes of hundreds of students submitting programs daily are not at all uncommon. This class of program is further enlarged by the observation that even experienced programmers have rather similar requirements (except for requiring a larger subset of the language) during the development and checkout of a new system.
[1]
William L. Maxwell,et al.
CLP-the Cornell list processor
,
1965,
CACM.
[2]
Douglas T. Ross,et al.
Automatic generation of efficient lexical processors using finite state techniques
,
1968,
CACM.
[3]
Howard Lee Morgan,et al.
Spelling correction in systems programs
,
1970,
Commun. ACM.
[4]
Saul Rosen,et al.
PUFFT—The Purdue University fast FORTRAN translator
,
1965,
CACM.
[5]
Robert A. Wagner,et al.
Common phrases and minimum-space text storage
,
1973,
CACM.
[6]
C. Robert Zarnke,et al.
WATFOR—The University of Waterloo FORTRAN IV compiler
,
1967,
CACM.
[7]
William L. Maxwell,et al.
CUPL - An Approach to Introductory Computing Instruction
,
1968
.
[8]
William L. Maxwell,et al.
CORC—the Cornell computing language
,
1963,
CACM.