The VAL Language: Description and Analysis

VAL is a high-level, function-based language designed for use on data flow computers. A data flow computer has many small processors organized to cooperate in the executive of a single computation. A computation is represented by its data flow graph; each operator in a graph is scheduled for execution on one of the processors after all of its operands' values are known. VAL promotes the indentification of concurrency in algorithms and simplifies the mapping into data graphs. This paper presents a detailed introduction to VAL and analyzes its usefulness for programming in a highly concurrent environment. VAL provides implicit concurrency (operations that can execute simultaneously are evident without the need for any explicit language notation). The language uses function- and expression-based features that prohibit all side effects, which simplifies translation to graphs. The salient language features are described and illustrated through examples taken from a complete VAL program for adaptive quadrature. Analysis of the language shows that VAL meets the critical needs for a data flow environment. The language encourages programmers to think in terms of general concurrency, enhances readability (due to the absence of side effects), and possesses a structure amenable to verification techniques. However, VAL is still evolving.more » The language definition needs refining, and more support tools for programmer use need to be developed. Also, some new kinds of optimization problems should be addressed.« less

[1]  Kenneth E. Iverson,et al.  A programming language , 1899, AIEE-IRE '62 (Spring).

[2]  L. B. Montz SAFETY AND OPTIMIZATION TRANSFORMATIONS FOR DATA FLOW PROGRAMS , 1980 .

[3]  R. Karp,et al.  Properties of a model for parallel computations: determinacy , 1966 .

[4]  Jack B. Dennis,et al.  Data Flow Supercomputers , 1980, Computer.

[5]  D. Comte,et al.  Parallelism, control and synchronization expression in a single assignment language , 1978, SIGP.

[6]  Duncan H. Lawrie,et al.  Glypnir—a programming language for Illiac IV , 1975, Commun. ACM.

[7]  Gerald J. Agin Computer Vision Systems for Industrial Inspection and Assembly , 1980, Computer.

[8]  R. R. Seeber,et al.  Associative logic for highly parallel systems , 1963, AFIPS '63 (Fall).

[9]  William W. Wadge,et al.  Lucid, a nonprocedural language with iteration , 1977, CACM.

[10]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[11]  C. A. Petri Concepts of Net Theory , 1973, MFCS.

[12]  WILLIAM B. ACKERMAN Data flow languages , 1979, 1979 International Workshop on Managing Requirements Knowledge (MARK).

[13]  Ian Watson,et al.  A prototype data flow computer with token labelling , 1899 .

[14]  Duane Albert Adams,et al.  A computation model with data flow sequencing , 1968 .

[15]  Jack B. Dennis,et al.  VAL -- A Value-Oriented Algorithmic Language (Preliminary Reference Manual), , 1979 .

[16]  Bruce D. Shriver,et al.  A simulation environment for performing dataflow research , 1979, SIGMETRICS '79.

[17]  John R. Rice,et al.  A Metalgorithm for Adaptive Quadrature , 1975, JACM.

[18]  Jeanne T. Martin,et al.  Lrltran language used with the chat and star compilers , 1973 .

[19]  Jarvis Dean Brock Operational Semantics of a Data Flow Language. , 1978 .

[20]  David J. Kuck,et al.  Parallel Processing of Ordinary Programs , 1976, Adv. Comput..

[21]  James L. Peterson,et al.  Petri Nets , 1977, CSUR.

[22]  Craig Schaffert,et al.  CLU Reference Manual , 1984, Lecture Notes in Computer Science.

[23]  J. E. Rodrigues,et al.  A GRAPH MODEL FOR PARALLEL COMPUTATIONS , 1969 .

[24]  Brian Randell,et al.  The Design of Highly Concurrent Computing Systems , 1978 .

[25]  Robert M. Keller,et al.  A loosely-coupled applicative multi-processing system , 1899 .

[26]  L. G. Tesler,et al.  A language design for concurrent processes , 1899, AFIPS '68 (Spring).

[27]  A. L. Davis,et al.  The architecture and system method of DDM1: A recursively structured Data Driven Machine , 1978, ISCA '78.

[28]  Stephen J. Allan,et al.  A Flow Analysis Procedure for the Translation of High-Level Languages to a Data Flow Language , 1980, IEEE Transactions on Computers.

[29]  John R. Rice Parallel Algorithms for Adaptive Quadrature. III. Program Correctness , 1976, TOMS.

[30]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[31]  C. S. Wetherell Error Data Values in the Data-Flow Language VAL , 1982, TOPL.

[32]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1960, Commun. ACM.

[33]  John R. Rice Parallel Algorithms for Adaptive Quadrature - Convergence , 1974, IFIP Congress.

[34]  Robert M. Shapiro,et al.  Concurrent Compiling. Volume I. Representation of Algorithms as Cyclic Partial Orderings. , 1972 .

[35]  John Cocke,et al.  Configurable computers: a new class of general purpose machines , 1972, International Sympoisum on Theoretical Programming.

[36]  Niklaus Wirth,et al.  Modula: A language for modular multiprogramming , 1977, Softw. Pract. Exp..

[37]  P. Brinch-Hansen,et al.  The programming language Concurrent Pascal , 1975 .