EPSILON(ID:285/eps001)

Macro language with high level features 


A.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:
  • Pottosin , I.V. et al, "Application of the Machine-Oriented Language Epsilon to Software Development", pp417-434 view details
          in Machine Oriented Higher Level Languages (van der Poel, Maarsen, editors) North Holland 1974 view details
  • Ledin, G. Jr., Review of Pottsoin 1973 view details Abstract: The authors and their coworkers at the Siberian branch of the USSR Academy of Sciences in Novosibirsk have been instrumental in devising a number of well-known software development tools, such as ALPHA, BETA, and AIST. In 1967, with the assistance of Vladislav Katkov, Anatoly Khoperskov, and others, they defined and implemented, for the first time, the language EPSILON. The language facilities of EPSILON are of a rather low "level," but their presence is the result of intentionally chosen criteria. EPSILON'S authors simply did not want to jump too much ahead of themselves, a commendable decision, considering the frequency of that "jump ahead'' occurrence in this, our golden age of language design.

    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
  • Ershov, AP and Pokrovskij, S.B. "Evolution of programming languages", Proc. 2nd All-Union Conf. on Operation Research, Petrozavodsk, 39-54 (Russian) view details
          in ACM Computing Reviews 16(02) February 1975 view details
  • Ershov, AP and Shura-Bura, M.R."The early development of programming in the USSR" Pt.1 & 2, Computing Center, Siberian Div. of the USSR Acad. of Sci., Novosibirsk (Russian) view details
          in ACM Computing Reviews 16(02) February 1975 view details