Compel(ID:319/com027)

Single assignment language 


COMpute ParallEL. The first single-assignment language


References:
  • review of Teslea et al 1968 view details Abstract: A language called COMPEL (COMpute ParallEL) is described that makes it possible for a machine to determine, during compilation, those parts of the program that can be executed simultaneously. A COMPEL program consists of statements assigning values to variables. It is essential that no variable be assigned values by more than one statement. The sequence of the assignment statements is immaterial since the machine determines the dependences of the variables. The execution sequence is thus established and the places where concurrent processing can be used are found. Comparisons between COMPEL and ALGOL (extended by IFORK, JOIN, and DO SIMULTANEOUSLY) are shown for several examples. No doubt it is a neater language for accomplishing parallel processing. The authors also suggest that COMPEL eliminates many of the peculiarities of languages such as FORTRAN by having only one statement type and not allowing confusing statements such as i = i + 1. The language has not been implemented, so no discussion of efficiency can be given.

          in ACM Computing Reviews 9(08) August 1968 view details
  • Tesler, LG and Enea, HJ, "A Language Design for Concurrent Processes pp403-408 view details
          in [AFIPS] Proceedings of the 1968 Spring Joint Computer Conference SJCC 32 view details
  • Leavenworth, Burt M.; Sammet, Jean E. "An overview of nonprocedural languages" pp1-12 view details Abstract: This paper attempts to describe some of the basic characteristics and issues involving the class of programming languages commonly referred to as ?nonprocedural? or ?very high level?. The paper discusses major issues such as terminology, relativeness, and arbitrary sequencing. Five features of nonprocedural languages are described, and a number of specific languages are discussed briefly. A short history of the subject is included.
    Extract: Compel
    A proposed -- but unimplemented -- approach to this is Compel (Compute Parallel) described by Tesler and Enea. They propose that all variables in each statement belong to two mutually exclusive groups: Input, Output. All rules on statement sequencing are replaced by the rule "The statement that outputs variable A must be executed before every statement that either inputs A or inputs some B such that B depends on A".
          in Proceedings of the ACM SIGPLAN symposium on Very high level languages, March 28-29, 1974, Santa Monica, California, United States view details