Synthetic Spheres is dedicated to research and innovation with open partnership to associations, international standards bodies, training company and academic university institutions.
Experience the future of advanced visual data processing. ANKHORs FlowSheet Data-Workbench is a universal and cross-industry tool to quickly and interactively solve the challenges of your data projects.
vvvv is a hybrid development environment with a visual dataflow editor and a textual c#/.net editor.
Introduction
Dataflow is a method of implementing software that is very different to the prevailing Von Neumann method that the software industry has been based on since inception.
At the lowest level, dataflow is both a programming style and a way to manage parallelism. At the top, dataflow is an over-arching architecture that can incorporate and coordinate other computational methods seamlessly.
Dataflow is a family of methods that all share one important fact, data is king. The arrival of data causes the system to activate. Dataflow reacts to incoming data without having to be specifically told to do so. In traditional programming languages, the developer specifies exactly what the program will do at any moment.
1.1 Overview of the Book
It is important to understand the concepts of dataflow and not just the specifics of one library so that you can quickly adapt to any new library encountered. There are many varieties of dataflow with subtle differences yet they all can be considered dataflow. Sometimes very slight changes in the dataflow implementation can drastically change how you design programs. This book will explain the whole landscape of dataflow.
Youll learn dataflow from the software perspective. How it is an architecture and a way to think about building programs.
Well start by covering it in its simplest form, Pipeline Dataflow, and then move on to the many features and variations youll encounter in existing implementations. Three of the most common styles of dataflow are explained in detail using code of a working implementation to bring theory into practice.
You should already have a little programming experience under your belt but you dont need to be an expert to understand what this book covers.
1.2 Reactive Programming is Dataflow
Reactive Programming is a term that has become popular recently but its origin stretches back to at least 1985. The paper, On the Development of Reactive Systems by David Harel and Amir Pnueli was the first to define reactive systems:
Reactive systems are repeatedly prompted by the outside world and their role is to continuously respond to external inputs.
The paper specifies that reactive systems are not restricted to software alone. They were discussing ways to develop any type of reactive system, software or hardware. A few years later in 1989 Gerard Berry focuses on the software aspects in his paper, Real Time Programming: Special Purpose or General Purpose Languages:
It is convenient to distinguish roughly between three kinds of computer programs. Transformational programs compute results from a given set of inputs; typical examples are compilers or numerical computation programs. Interactive programs interact at their own speed with users or with other programs; from a user point of view a time-sharing system is interactive. Reactive programs also maintain a continuous interaction with their environment, but at a speed which is determined by the environment, not by the program itself. Interactive programs work at their own pace and mostly deal with communications, while reactive programs only work in response to external demands and mostly deal with accurate interrupt handling.
Real-time programs are usually reactive. However, there are reactive program that are not usually considered as being real-time, such as protocols, system drivers or man-machine interface handlers. All reactive programs require a common programming style.
Complex applications usually require establishing cooperation between the three kinds of programs. For example, a programmer uses a man-machine interface involving menus, scroll bars and other reactive devices. The reactive interface permits him to tell the interactive operating systems to start transformational computations such as program compilations.
From the preceding quotes we can say that reactive programs
- Activate in response to external demands
- Mostly deal with handling parallelism
- Operate at the rate of incoming data
- Often work in cooperation with transformational and interactive aspects