Class Oriented Ring Associated Language 

Class Oriented Ring Associated Language.

A list processing system for handling graphical data structures (Sammett 1966)

Graphical display and systems programming on the TX-2. Used "rings" (circular lists) from Sketchpad.

Related languages
Sketchpad => CORAL   Adaptation of
CORAL => ACT   Influence
CORAL => APL-PL/I   Revision Strong Influence
CORAL => GSS   Influence
CORAL => QAS   Incorporated some features of
CORAL => RAMOS   Influence
CORAL => Ring Fortran   Implementation of
CORAL => Selma   Incorporated some features of

  • Kantrowitz, W.: CORAL macros-reference guide. Lexington, Mass.: MIT Lincoln Laboratory 1965. (Tech. Memo. No. 23L-0003.) view details
  • Roberts, L.G. "Graphical Communication and Control Languages" view details
          in Information System Sciences, Proc. of the Second Congress, 1965, Spartan Books, New York, 1965 view details
  • Bachman, C. W. review of Bobrow and Raphael 1963 view details
          in ACM Computing Reviews 7(03) May-June 1966 view details
  • Sutherland, W. R.: The CORAL language and data structure. Lexington, Mass.: MIT Lincoln Laboratory 1966. (Tech. Rep. 405.) view details
          in ACM Computing Reviews 7(03) May-June 1966 view details
  • Clapp, Lewis "Time-Sharing System Scorecard" Computer Research Corporation 1967 view details
          in ACM Computing Reviews 7(03) May-June 1966 view details
  • Gray, J. C. "Compound data structure for computer aided design" view details Extract: CORAL structures
    In the same family as the SKETCHPAD Ring Structures is CORAL 4 (Class Orientated Ring Associative Language). The philosophy behind CORAL is essentially the same as the program we outlined in the introduction: that the future for graphics lies in being able to manipulate data files and programs external to the graphics package, that pictures are really labels for the computer representation of external entities, and that it would be advantageous if the problem data structure and the graphics data structure used the same data structure package.
    In CORAL the data are stored in blocks of arbitrary but fixed length, which represent objects, and the blocks are connected by rings. These rings are different from the SKETCHPAD rings in that all ring elements point forwards, but initially the back pointer alternates with a pointer to the start of the ring, the back pointers also forming closed rings. (See Figure 2) This pattern will of course become disarranged as time proceeds.
    As a word on the TX-2 computer on which CORAL was implemented is sufficiently long to hold two 17-bit pointers, this configuration is very economical in space with only a small loss in processing time, due to the special halfword manipulation hardware in the TX-2.
    In order to build a block of a given type, a master block is set up containing the properties of that type of block, such as the block length and the number of pointer words or ring elements. All the blocks in the first level of the hierarchy point to their master blocks, which in turn point to a master-master block which starts the whole structure and also starts the Free List.
    In addition to holding data, a block holds elements from an arbitrary (predetermined) number or rings. (Figure 3). If more than one ring must pass through a given tie, a nub is built; this is a two-word element which connects a block with two rings. (Figure 4).
    A CORAL structure may be made considerably more complicated by the introduction of "decision" type blocks into the structure, which contain data and act like tree nodes to facilitate search procedures. These decision blocks can be extended if necessary to form search tables. It is claimed that this adds less than 25% in storage space and that search speed is very considerably increased; also that SKETCHPAD rewritten in CORAL would only occupy a quater of the original storage space.
    Free storage is organized by returning freed blocks onto a list whose branches each holds blocks of a certain size, and when necessary breaking up the unused area. Blocks are returned when all the rings have been removed from them; that is, isolated fragments of structure are considered unattainable.
    CORAL macro calls are based partly on the idea of putting objects into classes, and partly on ring concepts. Calls exist for setting up, adding to, and searching ordered classes; the information for ordering may if necessary be obtained from the data stored in the object or from the decision blocks. CORAL macros include the ability to construct arithmetic expressions, and there is a nestable goaround facility.
    The actual format of these calls consists of a string of symbols from the extensive character set of the Lincoln Writer; in the opinion of the author this does not aid their intelligibility.
          in Proceedings A.C.M. National Meeting, 1967 view details
  • Parker, DB "Solving design problems in graphical dialogue" pp179-219 view details
          in Karplus, W. J. ed. "On-Line Computing", McGraw-Hill, New York, 1967 view details
  • Sammet, Jean E., "Roster of Programming Languages 1967" view details
          in Computers & Automation 16(6) June 1967 view details
  • Sammet, Jean E. "Revised Annotated Descriptor Based Bibliography for the Use of Computers for Non-Numerical Mathematics" view details
          in Bobrow, D. G. (ed) "Symbol Manipulation Languages and Techniques", Proceedings of the IFIP Working Conference on Symbol Manipulation Languages. North-Holland Publishing Co., Amsterdam, 1968 view details
  • Sammet, Jean E. "Computer Languages - Principles and History" Englewood Cliffs, N.J. Prentice-Hall 1969. p.462. view details
          in Bobrow, D. G. (ed) "Symbol Manipulation Languages and Techniques", Proceedings of the IFIP Working Conference on Symbol Manipulation Languages. North-Holland Publishing Co., Amsterdam, 1968 view details
  • Millenson, J. R. "Language and list structure of a compiler for experimental control" view details Abstract: The data structure of a table drive, on-line experimental control language is described. Multi-linked record blocks are used to represent the set of possible experiments states and to store relevant information about significant internal and external events that may initiate transitions between states. Code compile by an algebraic compiler coexists with the state network and performs foreground or background numerical calculations on the network's variables. The data structure has affinities with certain symbolic manipulating languages, notably CORAL. Extract: Introduction
    ACT (Automated Contingency Translator) is a problem-oriented programming language for time-shared sequential control of on-line experiments in physical and biological sciences (Millenson 1967, 1968 and 1969). ACT has been implemented for the PDP8 family and PDP9, and a compiler is currently projected for the Elliott 903.

    ACT was designed to aid the non-professional programmer in generating computer control of the sequential logic of ongoing experimental conditions. In contrast to familiar systems that supervise experiments in which the principal complexities lie in the nature of the numerical computations, ACT is problem-oriented for applications where the experimental complexity lies in the nature of the logical network of possible conditions that the experiment must anticipate. The latter complexities are particularly exemplified by the contingencies of behavioural sciences where the logical network that specifies all possible conditions and outcomes of an experiment may be exceedingly complicated, yet the individual input/output functions are often trivially simple.

    The motivation of ACT and the corresponding terminology are drawn from applications in experimental psychology, where such logical contingency networks often explicitly constitute the chief independent variables of experiments (Snapper, Knapp and Kushner, 1970). Nevertheless, ACT represents a perfectly general system for expediting time-shared sequential control of a wide spectrum of processes, ranging from management and military contingency maps to traffic control.

    Previous descriptions of the language have concerned themselves with nomenclature and rules for generating control statements. The present report supplements these publications by describing the principal  ACT storage structures.
    Extract: Principles
    ACT is based on the principle that the logical network describing the possible paths that an experiment may take is conveniently represented by a finite state automaton. It has been shown elsewhere that the procedures of experimental psychology are particularly amenable to such a description. An ACT program thus consists of an explicit set of user defined states and transitions. In psychological applications these represent, respectively, the stimuli output to an experimental subject, and the subject initiated inputs that result in changes of experimental states. Additionally, the passage of specified times (as read from an internal clock) and computed events can also act as transitions to change experimental states.

    To actually generate the procedure of an experiment, the user is encouraged to first draw a state diagram corresponding to the network of contingencies that constitute the desired experiment. By a set of simple translation rules, the user next prepares a corresponding English text which he then compiles and executes. Any computations that must be carried out on incoming data or parameters are written in a mini-ALGOL mode which coexists with the control program. Both the control program and these computations are carried out as high priority foreground by an interrupt sensing monitor. Printing, punching, displaying, and auxiliary storage of collected input data are performed as time permits in background. The entire system time-shares in a round-robin the control of a group of independent experiments with service lags largely determined by the setting of the internal synchronising clock (25 msec is a typical value for experiments in psychology). The system presupposes interface hardware for translating the user's named states into environmental control signals, and for sensing analogue or digital subject initiated input signals (Millenson et al.9 1969).

    ACT regards an experiment as a succession of internal states, each one generating an external state (a stimulus) and holding within its data structure information about possible transitions to other states within the network. The fragment of an experimental automata network of Fig. 1 shows two states with several transitions to and from each other, and to states (not shown) outside the fragment. Unlike more familiar state diagrams, no explicit outputs are shown, as these are more conveniently implicitly incorporated into the definition of the states themselves.
    A fully translated program for controlling a given experiment, performing any necessary parameter computation, and retrieving desired data will consist of (i) a set of experimental states, (ii) a set of transitions, and (iii) generally several fixed blocks of compiled code. The storage structures by which ACT represents the states and transitions resemble some of the multi-linked list structures used to represent strings of text and their interrelationships (D'Imperio, 1969). In particular, ACT structures are close relatives of the ring-associative language CORAL (Raphael et al, 1968) and the Reaction Handler (Newman, 1967), languages employed for online modelling of graphic display data. ACT's function, of course, is principally to move from one part of a complex logical network to another, depending on its ability to match a current input signal or current time value with a stored list of significant inputs and times. As such it is far less concerned with manipulating interrelationships between its data elements than are the symbol manipulation languages with whom it shares structural similarities. Moreover, an ACT structure does not grow, shrink, or proliferate during execution, except by explicit direction from an interactive user.

    Nevertheless, like the Reaction Handler, it is a hybrid language: a translator for a state automaton is amalgamated with an algebraic compiler. But, whereas other control languages designed for similar applications have followed the philosophy of supplementing a standardised algebraic compiler with ad hoc control facilities, ACT is first and foremost a synchronous driven state automaton to which limited algebraic computation facilities for shared parameters are grafted. It is by this strategy that the sentences of ACT attempt to mirror in a natural way the problems they are designed to solve.
          in The Computer Journal 13(4) 1970 view details
  • Sammet, Jean E., "Roster of Programming Languages 1972" 64 view details
          in Computers & Automation 21(6B), 30 Aug 1972 view details
  • Sammet, Jean E. "Roster of Programming Languages for 1973" p147 view details
          in ACM Computing Reviews 15(04) April 1974 view details