Y(ID:982/y::001)


David Hanson, University of Arizona, 1981

General purpose language syntactically like RATFOR, semantically like C. Lacks structures and pointers. Used as a source language for the Davidson/Fraser peephole optimizer.


Related languages
Y => Y3   Evolution of

References:
  • Hanson, D. R. "A simple technique for controlled communication among separately compiled modules" pp921-924 view details
          in Software - Practice and experience 9(11) November 1979 view details
  • Hanson, D. R. Software Tools Programmer's Manual, Tech. Rep. TR 79-15, Dept. of Computer Science, Univ. of Arizona, Tucson, Aug. 1979. view details
          in Software - Practice and experience 9(11) November 1979 view details
  • Hanson, D. R. Code Improvement via Lazy Evaluation. Tech. Rep. TR 80-8, Dept. of Computer Science, Univ. of Arizona, Tucson, Apr. 1980 view details
          in Software - Practice and experience 9(11) November 1979 view details
  • Hanson, D. R. ls Block Structure Necessary? Tech. Rep. TR 80-3, Dept. of Computer Science, Univ. of Arizona, Tucson, Mar. 1980. view details
          in Software - Practice and experience 9(11) November 1979 view details
  • Hanson, D.R. "The Y Programming Language", U of Arizona Tech. Rep. 80-7b, Apr. 1980; revised June 1980, Oct. 1981. view details
          in Software - Practice and experience 9(11) November 1979 view details
  • D.R. Hanson, "The Y programming language" view details Extract: Introduction
    Introduction
    Y is a structured, general-purpose programming language intended for use in simple systems programming applications. More specifically', it is designed for applications similar to those described in the book Software Tools". Y is, in fact, meant to replace RATFOR for those sorts of applications and in programming courses based on Software Tools.
    Y is a relatively simple language. Syntactically, it falls about midway between RATFOR and C. Semantically, it leans towards C except that it does not support all of the C types. Y programs are collections of modules, which contain global and local static data and procedures. Procedures are recursive and are composed of local data declarations and statements. Statements are made up from the usual structured control flow constructs and expressions. Y supports integers, characters, and reals, and singly dimensioned arrays of them.
    In addition to the intended application areas mentioned above, Y is the experimental realization of some recent ideas concerning separate compilation and block structure. It also provides a testbed for experimental work in program portability and code optimization. The remainder of this paper describes the syntax and semantics of Y and illustrates its use.
          in SIGPLAN Notices 16(02) Feb 1981 view details
  • Hanson, D.R. "Y Programmer's Manual", U of Arizona Tech. Rep. 81-22, Dec. 1981. view details
          in SIGPLAN Notices 16(02) Feb 1981 view details
  • Spector, David "Ambiguities and insecurities in Modula-2" pp43-51 view details Extract: Introduction
    Introduction
    While it is not yet clear whether Ada, BLISS, Mary/2, Modula-2, Mesa, C, CLU, Edison, Concurrent Euclid, Icon, Newton, PLAIN, PLUS, Praxis, Smalltalk, SQURL, Y, or some other language is "best" for systems programming, each language represents an advance towards the goal of supporting an understandable and efficient organization of the many details and relationships inherent in systems programming.
    Unfortunately, no one language has yet achieved the delicate balance between simplicity and power that would distinguish it as ideal, but it appears that Modula-2 comes quite close. Modula-2 represents a step forward in language design, both because it incorporates existing features instead of inventing its own, and because of its evident concern for simplicity.
    Modula-2 offers the following valuable language features:
    Simplicity.
    Few primitive datatypes are defined, few control constructs are supported (there is no "go to"), and input-output operations are not provided as part of the language (they can be provided via extensions written in Modula-2). This simplicity allows for easier standardization and better portability than can be achieved with most other languages.
    Modules
    A module is a named collection of variables and procedures, similar to an Ada package. It controls the interfacing and encapsulation of the conceptual parts making up large software systems. Modules provide a more flexible solution to the problem of partitioning the name space of a large program than does the more familiar hierarchical nesting of procedures. They are so valuable they are even being force-fitted onto existing languages.
    Separate Compilation.
    Modules may be compiled separately, providing good management for large programsr and definition modules allow for specifying interfaces without giving implementation details.
    Flexible Datatypes.
    Strong datatypes are enforced, but this can be relaxed when necessary in systems programming to just declaring a parameter to be a word, an address, or an array of words.
    Machine Access.
    Access to specific memory addresses and other characteristics of the underlying machine is supported.
    Tasking.
    Flexible and efficient tasking is provided by coroutine management routines.
          in SIGPLAN Notices 17(08) August 1982 view details
  • Hanson, D.R. "The Y Compiler", U of Arizona Tech. Rep. 83-1, Jan. 1983. view details
          in SIGPLAN Notices 17(08) August 1982 view details
  • Hanson, D.R. "Transporting Y", U of Arizona Tech. Rep. 83-2, Mar. 1983. view details
          in SIGPLAN Notices 17(08) August 1982 view details
    Resources
    • ftp

      "