A survey of stream processing

Abstract.  Stream processing is a term that is used widely in the literature to describe a variety of systems. We present an overview of the historical development of stream processing and a detailed discussion of the different languages and techniques for programming with streams that can be found in the literature. This includes an analysis of dataflow, specialized  functional and logic programming with streams, reactive systems, signal processing systems, and the use of streams in the design and verification of hardware.The aim of this survey is an analysis of the development of each of these specialized topics to determine if a general theory of stream processing has emerged. As such, we discuss and classify the different classes of stream processing systems found in the literature from the perspective of programming primitives, implementation techniques, and computability issues, including a comparison of the semantic models that are used to formalize stream based computation.

[1]  P. J. Landin,et al.  A correspondence between ALGOL 60 and Church's Lambda-notations: Part II , 1965, CACM.

[2]  P. J. Landin,et al.  Correspondence between ALGOL 60 and Church's Lambda-notation , 1965, Commun. ACM.

[3]  P. J. Landin,et al.  The next 700 programming languages , 1966, CACM.

[4]  John von Neumann,et al.  Theory Of Self Reproducing Automata , 1967 .

[5]  J. Schwartz,et al.  Theory of Self-Reproducing Automata , 1967 .

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

[7]  Rod M. Burstall,et al.  Programming in POP-2 , 1971 .

[8]  Z. Manna,et al.  Inductive methods for proving properties of programs , 1972, Proving Assertions About Programs.

[9]  Teuvo Kohonen,et al.  Correlation Matrix Memories , 1972, IEEE Transactions on Computers.

[10]  Paul R. Kosinski A data flow language for operating systems programming , 1973 .

[11]  J. Vuillemin Proof techniques for recursive programs , 1973 .

[12]  Robert A. Kowalski,et al.  Predicate Logic as Programming Language , 1974, IFIP Congress.

[13]  Jack B. Dennis,et al.  First version of a data flow procedure language , 1974, Symposium on Programming.

[14]  William H. Burge,et al.  Stream Processing Functions , 1975, IBM J. Res. Dev..

[15]  Daniel P. Friedman,et al.  CONS Should Not Evaluate its Arguments , 1976, ICALP.

[16]  Peter Henderson,et al.  A lazy evaluator , 1976, POPL.

[17]  Robert A. Kowalski,et al.  The Semantics of Predicate Logic as a Programming Language , 1976, JACM.

[18]  Mansour Farah Correct compilation of a useful subset of lucid. , 1977 .

[19]  Robert M. Keller,et al.  Denotational Models for Parallel Programs with Indeterminate Operators , 1977, Formal Description of Programming Concepts.

[20]  Arvind,et al.  Some Relationships Between Asynchronous Interpreters of a Dataflow Language , 1977, Formal Description of Programming Concepts.

[21]  Gilles Kahn,et al.  Coroutines and Networks of Parallel Processes , 1977, IFIP Congress.

[22]  Roger M. Firestone An analytic model for parallel computation , 1977, AFIPS '77.

[23]  Teuvo Kohonen,et al.  Associative memory. A system-theoretical approach , 1977 .

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

[25]  Daniel P. Friedman,et al.  Unbounded computational structures , 1978, Softw. Pract. Exp..

[26]  Lynn Conway,et al.  Introduction to VLSI systems , 1978 .

[27]  Wil Plouffe,et al.  An asynchronous programming language and computing machine , 1978 .

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

[29]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

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

[31]  David E. Winkel,et al.  The art of digital design , 1980 .

[32]  Rod M. Burstall,et al.  HOPE: An experimental applicative language , 1980, LISP Conference.

[33]  N. Cutland Computability: An Introduction to Recursive Function Theory , 1980 .

[34]  Gerald Jay Sussman,et al.  CONSTRAINTS - A Language for Expressing Almost-Hierarchical Descriptions , 1980, Artif. Intell..

[35]  Keith L. Clark,et al.  A relational language for parallel programming , 1981, FPCA '81.

[36]  Charles E. Leiserson,et al.  Optimizing synchronous systems , 1981, 22nd Annual Symposium on Foundations of Computer Science (sfcs 1981).

[37]  William B. Ackerman,et al.  Scenarios: A Model of Non-Determinate Computation , 1981, ICFPC.

[38]  William W. Wadge An Extensional Treatment of Dataflow Deadlock , 1981, Theor. Comput. Sci..

[39]  John R. Gurd,et al.  Generation of dataflow graphical object code for the Lapse programming language , 1981, CONPAR.

[40]  Antony A. Faustini The equivalence of an operational and a denotational semantics for pure dataflow , 1982 .

[41]  H. T. Kung Why systolic architectures? , 1982, Computer.

[42]  Giorgio Levi,et al.  Applicative communicating processes in first order logic , 1982, Symposium on Programming.

[43]  Steven D. Johnson,et al.  Circuits and Systems: Implementing Communication with Streams , 1982, IMACS World Congress.

[44]  Giorgio Levi,et al.  Top-Down Mathematical Semantics and Symbolic Execution , 1983, RAIRO Theor. Informatics Appl..

[45]  Peter H. Welch Parallel assignment revisited , 1983, Softw. Pract. Exp..

[46]  Robin Milner,et al.  Calculi for Synchrony and Asynchrony , 1983, Theor. Comput. Sci..

[47]  D. Knuth,et al.  Simple Word Problems in Universal Algebras , 1983 .

[48]  Jan Willem Klop,et al.  A process algebra for the operational semantics of static data flow networks , 1983 .

[49]  Manfred Broy,et al.  Applicative Real-Time Programming , 1983, IFIP Congress.

[50]  Steven D. Johnson Synthesis of digital designs from recursion equations , 1983 .

[51]  Roger B. Dannenberg,et al.  Arctic: A functional language for real-time control , 1984, LFP '84.

[52]  Gérard Berry,et al.  The ESTEREL Synchronous Programming Language and its Mathematical Semantics , 1984, Seminar on Concurrency.

[53]  Peter J. Bickel,et al.  S: An Interactive Environment for Data Analysis and Graphics , 1984 .

[54]  Randal E. Bryant,et al.  A Switch-Level Model and Simulator for MOS Digital Systems , 1984, IEEE Transactions on Computers.

[55]  Prakash Panangaden,et al.  Stream-Based Execution of Logic Programming , 1984, SLP.

[56]  Amir Pnueli,et al.  On the Development of Reactive Systems , 1989, Logics and Models of Concurrent Systems.

[57]  Robin Milner,et al.  A proposal for standard ML , 1984, LFP '84.

[58]  Kenneth M. Kahn,et al.  A Primitive for the Control of Logic Programs , 1984, SLP.

[59]  Giorgio Levi,et al.  A Formal Model for Lazy Implementations of a Prolog-Compatible Functional Language , 1984, Implementations of Prolog.

[60]  Alice C. Parker Automated Synthesis of Digital systems , 1984, IEEE Design & Test of Computers.

[61]  D. A. Turner,et al.  Miranda: A Non-Strict Functional language with Polymorphic Types , 1985, FPCA.

[62]  John Staples,et al.  A fixpoint semantics for nondeterministic data flow , 1985, JACM.

[63]  Keith L. Clark,et al.  Notes on the Implementation of Parlog , 1985, J. Log. Program..

[64]  J. V. Tucker,et al.  Theoretical Considerations in Algorithm Design , 1985 .

[65]  Peter Dybjer,et al.  Program Verification in a Logical Theory of Constructions , 1985, FPCA.

[66]  John Glauert,et al.  SISAL: streams and iteration in a single assignment language. Language reference manual, Version 1. 2. Revision 1 , 1985 .

[67]  Lee Naish All Solutions Predicates in Prolog , 1985, SLP.

[68]  Geoffrey E. Hinton,et al.  Learning internal representations by error propagation , 1986 .

[69]  Stephen Wolfram,et al.  Theory and Applications of Cellular Automata , 1986 .

[70]  Toshitsugu Yuba,et al.  DCBL: dataflow computing based language with n-value logic , 1986 .

[71]  Giorgio Levi,et al.  The Relation between Logic and Functional Languages: A Survey , 1986, J. Log. Program..

[72]  Manfred Broy,et al.  A Theory for Nondeterminism, Parallelism, Communication, and Concurrency , 1986, Theor. Comput. Sci..

[73]  Doug DeGroot,et al.  Logic programming - functions, relations and equations , 1986 .

[74]  Cliff B. Jones,et al.  Systematic software development using VDM , 1986, Prentice Hall International Series in Computer Science.

[75]  Carlos Delgado Kloos,et al.  Towards a formalization of digital circuit design , 1986 .

[76]  James L. McClelland,et al.  Parallel Distributed Processing: Explorations in the Microstructure of Cognition : Psychological and Biological Models , 1986 .

[77]  Amir Pnueli,et al.  Applications of Temporal Logic to the Specification and Verification of Reactive Systems: A Survey of Current Trends , 1986, Current Trends in Concurrency.

[78]  Alain J. Martin,et al.  The Sync Model: A Parallel Execution Method for Logic Programming , 1986, SLP.

[79]  Toshitsugu Yuba,et al.  DBCL: Data-Flow Computing Base Language with n-Value Logic , 1986, FJCC.

[80]  Carlos Delgado Kloos Semantics of Digital Circuits , 1987, Lecture Notes in Computer Science.

[81]  Paul Le Guernic,et al.  SIGNAL: A declarative language for synchronous programming of real-time systems , 1987, FPCA.

[82]  Gheorghe Stefănescu,et al.  On Flowchart Theories: Part II. The Nondeterministic Case , 1987, Theor. Comput. Sci..

[83]  Manfred Broy,et al.  Predicative Specifications for Functional Programs Describing Communication Networks , 1987, Inf. Process. Lett..

[84]  Nicolas Halbwachs,et al.  LUSTRE: A declarative language for programming synchronous systems* , 1987 .

[85]  David K. Harrison,et al.  RUTH: A Functional Language for Real-Time Programming , 1987, PARLE.

[86]  Joost N. Kok,et al.  A Fully Abstract Semantics for Data Flow Nets , 1987, PARLE.

[87]  Carlos Delgado Kloos STREAM: A Scheme Language for Formally Describing Digital Circuits , 1987, PARLE.

[88]  Benjamin Criveli Thompson,et al.  A mathematical theory of synchronous concurrent algorithms , 1987 .

[89]  John Wylie Lloyd,et al.  Foundations of Logic Programming , 1987, Symbolic Computation.

[90]  Gérard Berry,et al.  Synchronous programming of reactive systems: an introduction to ESTEREL , 1988 .

[91]  Bernard Widrow,et al.  Adaptive switching circuits , 1988 .

[92]  Mike Holcombe X-machines as a basis for dynamic system specification , 1988, Softw. Eng. J..

[93]  Peter Dybjer,et al.  A Functional Programming Approach to the Specification and Verification of Concurrent Systems , 1988 .

[94]  Rangaswamy Jagannathan A descriptive and prescriptive model for dataflow semantics , 1988 .

[95]  Ehud Shapiro,et al.  A subset of Concurrent Prolog and its interpreter , 1988 .

[96]  Peter Aczel,et al.  Non-well-founded sets , 1988, CSLI lecture notes series.

[97]  Manfred Broy,et al.  Nondeterministic Data Flow Programs: How to Avoid the Merge Anomaly , 1988, Sci. Comput. Program..

[98]  J. V. Tucker,et al.  Program correctness over abstract data types, with error-state semantics , 1988, CWI monographs.

[99]  Mary Sheeran Categories for the Working Hardware Designer , 1989, Hardware Specification, Verification and Synthesis.

[100]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[101]  Manfred Broy,et al.  Towards a Design Methodology for Distributed Systems , 1989 .

[102]  J. V. Tucker,et al.  The concurrent assignment representation of synchronous systems , 1989, Parallel Comput..

[103]  Steven D. Johnson Manipulating Logical Organization with System Factorizations , 1989, Hardware Specification, Verification and Synthesis.

[104]  Robert de Simone,et al.  Process Calculi, from Theory to Practice: Verification Tools , 1989, Automatic Verification Methods for Finite State Systems.

[105]  R. C. Sekar,et al.  OBJ as a theorem prover with applications to hardware verification , 1989 .

[106]  A. F. Sinclair,et al.  Functional Programming and Operating Systems , 1989, Comput. J..

[107]  Neal Andrew Harman Formal specifications for digital systems , 1989 .

[108]  Bengt Jonsson,et al.  A fully abstract trace model for dataflow networks , 1989, POPL '89.

[109]  Andrew Richard Martin The specification and simulation of synchronous concurrent algorithms , 1989 .

[110]  Paul Amblard,et al.  Music Synthesis Descrip-tion with the Data-Flow Language LUSTRE , 1989 .

[111]  Dominique Clément,et al.  Specifying the Behavior of Graphical Objects Using Esterel , 1989, TAPSOFT, Vol.2.

[112]  Martin Hasler,et al.  Recursive neural networks for associative memory , 1990, Wiley-interscience series in systems and optimization.

[113]  W. Pitts,et al.  A Logical Calculus of the Ideas Immanent in Nervous Activity (1943) , 2021, Ideas That Created the Future.

[114]  W. P. Weijland Theoretical Foundations of VLSI Design: Verification of a systolic algorithm in process algebra , 1990 .

[115]  Avra Cohn,et al.  Theoretical Foundations of VLSI Design: A mechanized proof of correctness of a simple counter , 1990 .

[116]  D. Scott Parker,et al.  Stream data analysis in Prolog , 1990 .

[117]  Keith Michael Hobley Formal specification and verification of synchronous concurrent algorithms , 1990 .

[118]  Karl Meinke Universal Algebra in Higher Types , 1990, ADT.

[119]  John V. Tucker,et al.  Theoretical foundations of hardware design , 1990 .

[120]  Patrice Quinton,et al.  The ALPHA language and its use for the design of systolic arrays , 1991, J. VLSI Signal Process..

[121]  Zheng Zhu,et al.  An Algebraic Framework for Data Abstraction in Hardware Description , 1991 .

[122]  J. V. Tucker,et al.  Can excitable media be considered as computational systems , 1991 .

[123]  Georges Gonthier,et al.  Incremental Development of an HDLC Entity in Esterel , 1991, Comput. Networks ISDN Syst..

[124]  Albert Benveniste,et al.  The synchronous approach to reactive and real-time systems , 1991 .

[125]  J. V. Tucker,et al.  Verification of Synchronous Concurrent Algorithms Using OBJ3: A Case Study of the Pixel-Planes Architecture , 1991 .

[126]  Karl Meinke,et al.  Equational Specification of Abstract Types and Combinators , 1991, CSL.

[127]  Frédéric Boussinot,et al.  The ESTEREL language , 1991, Proc. IEEE.

[128]  Manfred Broy,et al.  On Denotational versus Predicative Semantics , 1991, J. Comput. Syst. Sci..

[129]  Zheng Zhu,et al.  An Example of Interactive Hardware Transformation , 1991 .

[130]  Thierry Gautier,et al.  Programming real-time applications with SIGNAL , 1991, Proc. IEEE.

[131]  Pascal Raymond,et al.  The synchronous data flow programming language LUSTRE , 1991, Proc. IEEE.

[132]  John Staples,et al.  An Extensional Fixed-Point Semantics for Nondeterministic Data Flow , 1991, Theor. Comput. Sci..

[133]  Robert B. France,et al.  Semantically Extended Data Flow Diagrams: A Formal Specification Tool , 1992, IEEE Trans. Software Eng..

[134]  Bharat Jayaraman,et al.  A domain-theoretic approach to functional and logic programming , 1992, Journal of Functional Programming.

[135]  Karl Meinke Algebraic Semantics of Rewriting Terms and Types , 1992, CTRS.

[136]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

[137]  Gérard Berry,et al.  A hardware implementation of pure ESTEREL , 1992 .

[138]  J. V. Tucker,et al.  Coupled map lattices as computational systems. , 1992, Chaos.

[139]  Manfred Broy,et al.  Modelling Operating System Structures by Timed Stream Processing Functions , 1992, J. Funct. Program..

[140]  Manfred Broy,et al.  The Design of Distributed Systems - An Introduction to FOCUS-revised version , 1992 .

[141]  S. Gorlatch Parallel Program Development for a Recursive Numerical Algorithm � a Case Study , 1992 .

[142]  Frank Dederichs,et al.  Transformation verteilter Systeme: von applikativen zu prozeduralen Darstellungen , 1992 .

[143]  Miklós Bartha,et al.  An Algebraic Model of Synchronous Systems , 1992, Inf. Comput..

[144]  Nicolas Halbwachs,et al.  Programming and Verifying Real-Time Systems by Means of the Synchronous Data-Flow Language LUSTRE , 1992, IEEE Trans. Software Eng..

[145]  Miklós Bartha,et al.  Foundations of a Theory of Synchronous Systems , 1992, Theor. Comput. Sci..

[146]  J. V. Tucker,et al.  Theory of Computation over Stream Algebras, and its Applications , 1992, MFCS.

[147]  Patrice Quinton,et al.  The Alpha du Centaur experiment , 1992 .

[148]  A. Rabinovich On Schematological Equivalence of Dataaow Networks , 1993 .

[149]  J. V. Tucker,et al.  Infinite Synchronous Concurrent Algorithms The Algebraic Specification and Verification of a Hardware Stack , 1993 .

[150]  Manfred Broy,et al.  Functional specification of time-sensitive communicating systems , 1993, TSEM.

[151]  Dan I. Moldovan DATA-FLOW COMPUTING , 1993 .

[152]  Karl Meinke,et al.  ATLAS: A Typed Language for Algebraic Specification , 1993, HOA.

[153]  Robin Sharp,et al.  Transformational Rewriting with Ruby , 1993, CHDL.

[154]  Karl Meinke,et al.  Specification and Verification in Higher-Order Algebra: A Case Study of Convolution , 1993, HOA.

[155]  Keith Hanna,et al.  Strongly-Typed Theory of Structures and Behaviours , 1993, CHARME.

[156]  Whfj Wilbert Körver A discrete switch-level circuit model that uses 4-valued node states , 1993 .

[157]  G. Kane Parallel Distributed Processing: Explorations in the Microstructure of Cognition, vol 1: Foundations, vol 2: Psychological and Biological Models , 1994 .

[158]  Henggui Zhang,et al.  Coupling CMLs and the synchronization of a multilayer neural computing system , 1994 .

[159]  J. V. Tucker,et al.  Computable Functions on Stream Algebras , 1995 .

[160]  R. Jagannathan,et al.  Multidimensional programming , 1995 .

[161]  Jan A. Bergstra,et al.  Equational specifications, complete term rewriting systems, and computable and semicomputable algebras , 1995, JACM.

[162]  M. Broy Compositional Reenement of Interactive Systems , 1995 .

[163]  B. C. Thompson,et al.  Cartesian Stream Transformer Compositon , 1996, Fundam. Informaticae.

[164]  W. H. F. J. Körver,et al.  A discrete formalization of switch-level circuit behavior , 1996, Integr..

[165]  Manfred Broy Compositional refinement of interactive systems , 1997, JACM.