ZENO(ID:838/zen001)


U Rochester 1978. Euclid with asynchronous message-passing.


Structures:
Related languages
Euclid => ZENO   Extension of

References:
  • Ball, J.E. et al, "Preliminary ZENO Language Description" view details Abstract: The specification of ZENO, a programming language intended as the target language for a research project in advanced compiling, is presented. The language is strongly based on EUCLID, with modifications for message-based parallel processing and a somewhat different treatment of data types.
    Extract: IN
    The programming language ZENO is being designed to act as a test bed for research in distributed processing and in sophisticated code optimization. It does not represent a full-fledged attempt to design the perfect general purpose programming language. Instead, our goal has been to define a language which is typical of recent language designs and which includes those constructs that we feel have particular significance for research in compiler design and distributed processing. It is presented here because some of its features have applications in current attempts to define reliable system programming languages.

    The basic language is in the ALGOL-60, PASCAL, and EUCLID tradition, and the bulk of the language is derived directly from EUCLID. However, it is important to note that our goals are quite different from those of EUCLID. The EUCLID designers have stated that EUCLID was "... designed to facilitate the construction of verifiable system programs" [Lampson et al., 1977]. They later state "... the language must not require a highly optimizing compiler to achieve an acceptable level of efficiency in the object program." EUCLID was also "... designed to permit one-pass translation."

    We are proposing to construct a highly sophisticated optimizing compiler (of necessity multi-pass) and thus we have altered some of the design of EUCLID. We do not consider veriflability as a prime goal, but we treat assertions as a very important source of information for the compiler. Code optimizations are performed by recognizing certain relationships among the expressions and statements of a program which allow us to generate better code than could be generated without knowledge of such relationships. Assertions and their implications can provide the optimizing compiler with additional knowledge of such relationships.

    ZENO is being designed with mechanisms for distributed computations [Feldman, 1976]. In particular, ZENO includes ways of talking about independent instantiations (parallel processes) of programs communicating with each other using only messages.

    The other major difference between ZENO and EUCLID is in the notion of data-type. Rather than use data types to express restrictions on the range of variables (EUCLID subrange types), we use assertions to specify the properties (including value range) associated with each variable.

          in SIGPLAN Notices 14(09) Sep 1979 view details