EPSILON(ID:285/eps001)Macro language with high level featuresA.P. Ershov, Novosibirsk, 1967. Macro language with high level features: strings, lists, etc. Used to implement ALGOL 68 on the M-220. People: Structures: References: in Machine Oriented Higher Level Languages (van der Poel, Maarsen, editors) North Holland 1974 view details Data may be structured into lists, or treated as a linear text stored in a one- dimensional array. Lists are more general and often more adequate for software development problems, but linear text is more easily implemented. Hence EPSILON has one-dimensional arrays called "vectors" to handle equallength elements, but it has no lists. "Words" consisting of "syllables" handle data structures whose elements differ in length. The initial desire of EPSILON'S authors was to forego types completely, allowing any operator to be applied to any object, but eventually they made a small concession to permit very elementary arithmetic. Hence, EPSILON has two classes of constants: numerical (non-negative integers in decimal notation) and declared (identifiers declared and initialized with binary or octal values). EPSILON'S memory allocation control facilities are not foolproof; these were designed with low "level" (operating system-deprived) computers in mind, and include both the automatic and progTammer-controled allocation principles. Procedures are either closed (in which parameters are called by value only) or open in EPSILON. The language is blockless -- declarations occurring in the body of a closed procedure continue to be valid after the procedure declaration, and entities are illegitimate only if their attempted use precedes their legal definition. EPSILON'S open procedures utilize a macro mechanism, and their actual parameters may be statements, or groups of statements. The authors nearly got away with total simplicity in designing EPSILON. Expressions are among the simplest constructs of the language, which admits only binary operators (four arithmetical, two logical, and one shift) and does not permit parentheses. Scalar variables are not declared, and undeclared identifiers are defaulted to scalars. In EPSILON looping cannot be done explicitly, but only with the help of counter accumulation and conditional jumps. In their quest for simplicity, the authors ascertain that oversimplification has been a mixed blessing. Among the problems that have surfaced and are presently under scrutiny are: the exclusion from EPsiLoNof both a universal code mechanism and fixed representations for a certain class of characters specified by the language; formal parameters regarded as scalar variables valid everywhere in the program; no possibility of using one identifier as a formal parameter simultaneously in different procedures; labels in open procedures having to be formal parameters because otherwise they could appear more than once in the resulting program; and absence of explicit loops. The influences of BLISS, and what later became ALGOL 68, are felt in EPSILON, especially if it is seen as a system-oriented language. The authors do not expand on this point in their article, but do mention EPSILON'S text editing, debugging, and conversational facilities. Their exposition terminates with the illustration of an EPSILON application to software development problems. In describing their example -- dubbed as the "Exclusively Simple Experimental Language," or ESEL, an improvised creation acknowledged as undebugged and not devoid of errors -- the authors present the resulting EPSILON programs for the ESEL, the compiler and the interpreter. Not flawless, but an interesting and untrivial exercise. in ACM Computing Reviews 16(02) February 1975 view details in ACM Computing Reviews 16(02) February 1975 view details in ACM Computing Reviews 16(02) February 1975 view details |