On the equivalence and transformation of program schemes
Iu I. Ianov · Communications of the ACM · 1958
More can be said about the SML-ML translator.The way we are programming RUNCIBLE for the Univac, the translator will consist of two parts: 1) SML to inefficient ML; 2) inefficient ML to good ML.(ML here means symbolic ML, UNISAP".)The "inefficient ML" will work but will be wasteful of space.The chief job of part 1 is to decide what operations can be done by the hardware and do not require a reference to the library, and to translate, for each operation, A-and R-storage into appropriate machine registers.Part 2 keeps a table of the contents of the machine equivalents of A-, R-, and Tstorage and weeds out about as much coding as a human programmer could, subject to the restriction that he may not permute operations.I have tried to describe in rough terms an UNCOL, whose suitability for describing arithmetic computation will be ascertained in our current flow-charting of a compiler which uses it.The suitability of SML for all computation is open to question, but assuming some kind of communication (regarding what are legitimate operations) between the POL-SML phase and the SML-ML phase, the complete generality of SML is very plausible.