One thing that I am seeing on a re-read is that I conflated the notion of 
the data flow function and the paths. I was sort of thinking that the data 
flow functions "sit" at a particular path location. Similar to how a value 
"sits" in a location in memory. It is more appropriate to say that the data 
flow function is associated (referred isn't quite right) with a particular 
path location. 

Taking this a bit further, a data flow function DOES NOT actually know who 
its inputs are. It only knows that it takes input values in/of a certain 
form. The schema that specifies how one set of paths map to another path 
are possibly separate from the schema that specifies which dataflow 
function is associated with which path.

On Tuesday, December 24, 2013 1:36:16 PM UTC-8, Stephen Cagle wrote:
>
> Thank you. I only read the last two articles so far; some notes.
>
>
> http://my.opera.com/Vorlath/blog/2008/01/06/simple-example-of-the-difference-between-imperative-functional-and-data-flow
>
> I realized that I really wasn't getting what dataflow was about. I was 
> viewing dataflow paths as a sort of hook that I could hang values on. I had 
> never externalized the fact that each path only refers to the things it 
> inputs upon. Specifically, I was modeling some of the patterns like path A 
> passes a value to B, B does some computation, and puts the result on path 
> A. This isn't neccessarily wrong, but it appears that I was using dataflow 
> paths in a way similar to function evaluation. 
>
> He makes a big deal out of not needing to know where his inputs come from, 
> as well as not needing to invoke a function to create his inputs, but it 
> still seems he must have a reference to his inputs.
>
> The effectively automatic parallellization of the code is pretty neat. Not 
> so much because it is parallelized (which can be done in other systems), 
> but mostly because it required no forethought or synchronization. It is 
> automatically parallelized and pipelined. Neato. Of course, we aren't going 
> to get much of that in js without some work. 
>
> The second to last paragraph was another head turner. I had previously 
> viewed every dataflow node/path as a loop that just waits for a change in 
> its inputs and computes a new value when one of them changes. However, in 
> his system recursive calls are also parallelized and pipelined. I am not 
> quite sure how this would be implemented, but it seems neat. Again though, 
> probably not relevant to js.
>
> http://my.opera.com/Vorlath/blog/2008/07/25/hierarchies-and-equivalence
>
> This one is more of a philosophy/notice of intent piece. This one should 
> probably be read after the previous article. If I hadn't read the previous 
> article, I would understand the words he is saying, but not their 
> implications. There were many parts in this article that I disagreed with, 
> but it seems wasteful to argue over individual sentences.
>
> Honestly, too many ideas came at me too fast. I would have to re-read at a 
> later point to have much of an opinion. Having said that, the content may 
> be good (or not), but I am not sure this article would change any opinions 
> unless the person was already predisposed.
>
> On Tuesday, December 24, 2013 9:39:58 AM UTC-8, Dan Kersten wrote:
>>
>> Here's some resources to get you started learning about dataflow as a 
>> paradigm. From this you should be able to figure out how Pedestal's 
>> dataflow system fits in.
>>
>> A list of existing dataflow languages and systems: 
>> http://stackoverflow.com/questions/461796/dataflow-programming-languages/949771#949771
>>  I 
>> would suggest looking into a few of these to learn the concepts. I'd also 
>> suggest trying out one or more of the visual dataflow languages to get a 
>> feel for how problems can be solved in this paradigm and how non-pure 
>> functions fit in. I've personally used both Max/MSP and Synthmaker and 
>> found the concepts really clicked after using them for a while.
>>
>> A work in progress book on which you may also want to keep an eye: 
>> http://dataflowbook.com/cms/
>>
>> Also, if you can ignore the tone, this article has helped me better 
>> understand how code fits together in a dataflow system (a flat hierarchy): 
>> http://my.opera.com/Vorlath/blog/2008/07/25/hierarchies-and-equivalence and 
>> this one talks about how dataflow differs from imperative programming: 
>> http://my.opera.com/Vorlath/blog/2008/01/06/simple-example-of-the-difference-between-imperative-functional-and-data-flow
>>  But 
>> be warned that the author of those is very opinionated and feels that he is 
>> writing about the "one true way" ;-)
>>
>>
>>
>> On 23 December 2013 19:32, Stephen Cagle <sam...@gmail.com> wrote:
>>
>>> < Cross posted from pedestal-users group, as many people who are not 
>>> using pedestal may still know about dataflow, terms like effect are used in 
>>> the context of pedestal >
>>>
>>> Pedestal seems strongly based on dataflow based programming. The 
>>> gigantic tutorial just sort of jumps in on it. 
>>>
>>> Based on my usage thus far, dataflow seems really good at modeling 
>>> problems that are self contained. In their pure forms (no external inputs 
>>> or internal effects), dataflow seems almost like a circuit diagram. 
>>>
>>> However, I quickly get confused once we start dealing with effects. 
>>> Seems that there is a large "Here be Dragons" area of code in that region 
>>> (services.cljs).
>>>
>>> I feel that this may not be dataflow's fault; I just haven't got my head 
>>> around it. When I look at dataflow, I feel like it is constraining me to a 
>>> particular way of solving a problem. The upside of this is that I have made 
>>> my logic declarative and potentially easier to reason about. This is a 
>>> trade-offs that seems similar to the trade-offs one makes when moving from 
>>> a mutable procedural programming model to a immutable functional model. I 
>>> have yet to personally get substantial benefit from dataflow, but that does 
>>> not mean I will not with more mastery.
>>>
>>> I am wondering if there are any any getting started guides for dataflow 
>>> programming that you (the community) would recommend. I would be especially 
>>> interested in "recipe books" for dataflow based programming. How do you 
>>> really do asynchronous processing with dataflow? What if your asyncs may 
>>> return in a random order but must be processed in a specified order? A few 
>>> books/articles/whatever on how experts think through these problems could 
>>> be quite beneficial.
>>>  
>>> -- 
>>> -- 
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+u...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> --- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to clojure+u...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to