A mathematical language compiler
J. Chipps, M. Koschmann, Stephen Orgel, Alan J. Perlis, J. Smith · 1956
I. Introduction.A compiler may be defined as a program which satisfies the following four conditions:1. Universality, i.e., the ability to translate into machine language any program which could have been coded in machine language.(This is trivially satisfied if the compiler can accept machine language.)2. Direct machine translation of flow charts into a program.A flow chart is here understood to consist of an ordering of substitutional and relational statements; and connectives.3. Automatic allocation of machine storage, since such allocation is independent of the logical structure of a problem.4. Extension of its list of recognizable symbols to include those corresponding to any flow chart when instructed to do so.The motivations leading to the consideration of a compiler are obvious to anyone who has ever written at least one program.Nevertheless we sum~rize them briefly as follows:1. Programming is a highly repetitive technique and hence capable of automation.2. People who propose problems should program them.3. The ratio of the time required to flow chart a problem to that for programming a problem should be much larger than 1.Currently it is much smaller than 1 and as the machines get larger this ratio is tending to approach 0.4. Recognizing that computor design should be in perpetual transition, the structure of compilers may provide insight into the logical design of future computors.