Timely Dataflow in Fifteen Minutes [video]
youtube.com
youtube.com
Watching this explanation I’m slightly curious whether things like materialize and noria are a bit limited in that this could be a paradigm for an actual functional reactive programming language rather than specifically a “data” thing. It appears to have the structure of nested contexts (loops, scopes, etc) advocated by structured programming (ie “goto considered harmful”). It can reliably calculate an answer at each point in time for each state of input, concurrently and with parallelism. Even if there are multiple inputs with their own notion of time (not covered in the video). That’s, like, the holy grail of PLT these days, isn’t it? Or am I missing something?
I just looked at their license[1] and it doesn't appear to be open source at the moment.
https://github.com/MaterializeInc/materialize/blob/master/LI...
We think the BSL strikes a good balance between giving back to the community—four years after every release, the code is automatically relicensed under Apache 2—and ensuring we can build a viable business. And you’re free to use Materialize for any purpose in a non-distributed (i.e., single node) deployment without paying for an enterprise license.
Branching: http://www.fmjlang.co.uk/fmj/tutorials/Conditional.html
Looping: http://www.fmjlang.co.uk/fmj/tutorials/Iteration.html
Emit and collect: http://www.fmjlang.co.uk/fmj/tutorials/Macros.html
These show the basic idea. There are many other examples throughout the tutorials (http://www.fmjlang.co.uk/fmj/tutorials/TOC.html).
BTW, in case anyone's wondering why there have been no recent updates to the pages on my visual dataflow language, it's because the many improvements I've been making, particularly big changes to the type system, have required a lot more work than I expected. I haven't abandoned work on it, but it will still be some time before it's ready for release.
Fundamentally though, the density of text expressions exceeds a data flow graph by a huge margin. If what is being done isn't fundamentally a directed acyclic graph, visualizing it with a graph becomes more difficult to absorb than the expressions as text.
Anyone felt the same or can provide a real-world problem, where data flow is actually working better that other solutions?
This is about timely dataflow, the foundation of differential dataflow. It allows for the efficient incremental computation of results.
It basically solves the entire view maintenance problem from databases in a very elegant and efficient way.
It’s like a cache, except it keeps itself in sync with the database automatically and generates “materialised views” using data-flows based on the queries that get asked of it and will automatically generate new ones if someone makes a query it doesn’t already have a data flow for. Parts of data flows can also be shared across views.
The paper linked in the github goes into detail about the performance gains, but it easily outperforms straight database calls and caching setups.
$ printf 'Hello World' | awk '{print $2}' | tr '[A-Z]' '[a-z]' | wc -w | cat
Just kidding ;-)