=============== Dataflow graphs =============== .. toctree:: :maxdepth: 1 Why dataflow graphs? -------------------- **A dataflow graph describes the data flow of a software in Graphic.** That represents the flow of the data of an application. Dataflow graphs can also be used to represent the data flow of a process or activity. The result is the possibility to display software in order to illustrate features and functions in the team simply and clearly. Implementing software using dataflow graphs visualizes the process to be implemented. Internal business processes thus become more visible and can be understood more quickly by all team members. This makes entire process chains evolvable and can be graphically documented. Since the graph created by E2C is executed at runtime, it can be ensured that the model and implementationalways match each other. Advantages of dataflow ---------------------- Dataflow is a common programming model for parallel computing. In a dataflow graph, the nodes represent units of computation, and the edges represent the data consumed or produced by a computation. **Parallelism.** By using explicit edges to represent dependencies between operations, it is easy for the system to identify operations that can execute in parallel. **Distributed execution.** By using explicit edges to represent the values that flow between operations, it is possible for E2c to partition your program across to different machines. **Portability.** The dataflow graph is a language-independent representation of the code in your model. Data flow and control flow -------------------------- **A common function couples data flow and control flow.** If a function is exited via a return statement, the process loses control of this function and passes it on to the next function. Data flows into a function and the function gets the control to work with that data. After processing, the function passes control to another function and data flow is coupled to the control flow. This always happens as soon as a function is left. It looks different when data is not passed out of the function via a return statement, but through continuations. Continuation and return values ------------------------------ **A** Continuation_ **is an abtract representation of the control state of software.** **Continuations are functions that return values via return functions.** Return functions has the following advantages: * Returns can be made at any time, including asychron. * Returns can skipped by not invoking the return function. * A function can call a return function and then exit these function. - *Original behavior of a function* Continuations are thus simply functions that are passed as parameters in other functions. The function itself avoids dependencies on other function due to continuations. .. _Continuation: https://en.wikipedia.org/wiki/Continuation