Flow - gusenov/kb GitHub Wiki

  • Paul Morrison inventor/discoverer of Flow-Based Programming (FBP)
  • wiki.c2.com/?FlowBasedProgramming
  • The state of Flow-based Programming - A system brought to life
  • Apache Flink Stateful Computations over Data Streams
  • Bitspark / What the hell is dataflow programming? by Julian Matschinske
    • what is the purpose of programming languages?
      • allow humans to write programs that have to be executed on the computer
    • The complexity and power of software systems today could only be achieved by one brilliant approach that is characteristic to the evolution of programming languages ever since: abstraction.
      • Abstraction is the concept of hiding unneeded details.
      • true task of programming languages — hide details of implementation so that you can focus on what matters
    • part of imperative programming:
      • sequencing of instructions
      • unconditional and conditional jumps
    • Von-Neumann computer
      • Simply speaking, it has a global memory consisting of billions of single cells and a processing unit. When we assign values to a variable, the Von-Neumann computer will write this value into a memory cell and remember what memory cell is linked with the variable. When adding two variables, the computer has to look up the variable values from these cells, calculate the sum, and write it back into another cell.
    • functional programming paradigm
      • functions in a mathematical sense
      • They cannot change the state of our program like reading from or writing to a global variable in the memory.
      • All they can do is take the values we give them and return a value.
      • possibility of treating functions as values
        • How can a function be a value? But what is a function after all? It is a mapping from one value to another — just like a map! And a map is… right, a piece of data and hence something that can be treated as a value.
      • freedom of unintended side-effects and unpredictable behavior
      • The order of statements in functional programming is not equivalent with the order of execution on the machine.
    • flow-based programming
      • The flow-based paradigm tries to have a natural way of abstracting logic and an obvious way of visualizing each of its elements.
      • Unlike imperative programming, FBP does not operate on a global memory. In that regard it is very similar to functional programming. But unlike functional programming, the order of its elements is important and has a meaning.
      • Abstraction in FBP is achieved by packaging several operators together into one new operator. What you get is a more powerful piece of logic that you can use in your programs or share with others. The more you abstract the operators the closer you get to the software architectural view of your program. That’s right! You don’t need to grab a pencil and draw the software architecture to get an understanding how your program works — it is already there!
  • FutureOfCoding.org / Advances in Dataflow Programming Languages
    • Many of the original dataflow langauges, particularly in academia, were designed to take advantage of the new hardware by making data dependencies explicit.
    • dataflow and von Neumann techniques were not mutually exclusive and irreconcilable concepts, but simply the two extremes of a continuum of possible computer architectures
      • Fine-grained dataflow could now be seen as a multithreaded architecture in which each machine-level instruction was executed in a thread on its own.
      • von Neumann architectures could now be regarded as a multithreaded architecture in which there was only one thread—the program itself
    • freedom from side effects
    • locality of effect
    • data dependencies equivalent to scheduling
    • single assignment of variables
    • unusual notation for iterations
    • lack of history sensitivity in procedures
    • J Paul Morrison’s flow-based programming is “reminiscent of dataflow” programming but does not obey the dataflow firing rules.
      • flow-based programming using dataflow semantics, particually a visual directed graph, for the control flow of a program, but that much of the computation happens inside nodes in traditional imperitive code

Wikipedia

GitHub

Stack Exchange