Please speak your mind in this thread.
Absolutely! When was that Sutherland speech made?
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-progra...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Reading
the reactions on the "Asynchronous thinking" page by Alfredo, and especially on
the presentation “Some Thoughts About Concurrency” by Ivan
Sutherland, I would like
to share some of my ideas about it with you.
– The
work of the Asynchronous Research Center is
hardware oriented.
– “Asynchronous” is used in the sense of “without the synchronization of a clock” and as such it is not related to the asynchronous processes of FBP.
– There are probably more essential reasons why we have trouble dealing with concurrency in application development.
In short: The presentation is not really significant in relationship to FBP, but the way Ivan Sutherland addresses the communication problem may help us better to understand the value of the FBP concepts.
In the beginning of his presentation Ivan
Sutherland stated:
“Concurrency is not fundamental to our
thinking.
We train our programmers to think sequentially. …
Computer
languages all followed the sequential model. …
It was how we thought…”.
My immediate reaction was: Are we thinking
sequentially? Is our brain working sequentially? Our body shows the opposite.
Watch how a pianist is able to control the numerous muscles of his fingers
simultaneously, at a furious pace. The human brain is a kind of
multi-multi-…-processor, with multiple connections between the neurons.
And as the same type of neurons are involved in our thought processes, we can assume that concurrent thinking and thinking about concurrency should not be a problem to our brains (at least when we are able to be/remain focused on the processes).
But the communication between the brain and the outside world is generally limited to a sequence of related elements. Textual languages are (mainly) written and read in a sequential way. As such our concurrent thinking may become almost imperceptible as the result of our sequential communication process.
We must look for ways to improve the
communication of our thoughts about concurrent activities. Visual programming
languages, – text enhanced by graphical elements,– may improve the communication
(and in addition, it helps us to be/remain focused on the processes). But
(especially at this moment) the production of ‘visual programs’ may be a (too)
heavy load to generalize its use. FBP provides the possibility to support
asynchronous thinking at the higher level and use synchronous thinking at the
obvious lowest level.
[ Tomi Maila, with his ExpressionFlow, tried to introduce graphics up to the lowest level, but did he give up? Efficiency is often decisive. ]
In relationship to the use of those two levels, I would like to refer to your statement in your book about things like 'preheating' and concurrency. The cook initiates the actions things in a sequential way. The brain converts the concurrent things into a sequential list. If the cook repeats this sequence of activities several times, it will be recorded in what neurologists call 'procedural memory'. Even our brains seem to recognize that (fixed) procedures are superior when dealing with simple things.
The following remarks were sent to me by Herman Van Goolen of the Netherlands, an IT architect with many years of experience. He has had repeated problems posting comments to the Google Group, so he has asked me to do it for him. Hopefully this will stir up some more discussion on the topic. Here are his remarks:
– “Asynchronous” is used in the sense of “without the synchronization of a clock” and as such it is not related to the asynchronous processes of FBP.
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-progra...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-progra...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
I worry that it [examples like Forrest's clock] doesn't help programmers to make the jump from synchronous, von Neumann, thinking, to asynchronous FBP thinking.
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-progra...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
I'll finish this rant now, and ask for feedback! I don't want to cause a schism in the ranks, but I think we have to be more aware of the need to move away from synchronism - no matter how pretty it looks - and promote asynchronous thinking, starting with schoolkids!I do agree of course that being able to build systems from componentry and reconnect them easily is a plus, but if we are still in a synchronous mindset, I think that's a real problem!
So for me, the boundary is clear. Von Neumann on the inside and Morrison on the outside :-)
There are two components that replace this behavior http://noflojs.org/library/noflo-calc/ , which is more in line with classical fbp designs i think.
I propose a challenge that illustrates the problem with fine grained componentry, and it is FizzBuzz. http://en.wikipedia.org/wiki/Fizz_buzzThis simple problem is supposedly used to test candidates on extremely basic programming ability. Solving this kind of problem with fbp and fine grained components like modulus, joining strings, etc, is really time consuming and brittle. A task you can complete in your language of choice in a minute.Can you ( anybody in the mailing list ) implement this with general pourpose components in a clear and maintainable way with little effort? I'd like to see it.
On a related note, an educational component library for noflo could serve as a tool to teach kids and grown ups alike, similar to what logo did for procedural programming, or other similar efforts involving a simple robot like entity that moves around the screen and picks up objects, etc.I was considering some sort of imaginary factory that the user has to build and or edit to produce the required goods, in a game like environment. Connecting machines together, getting requests from clients, shipments for parts, etc. What do you think ?
For those who remember the old FBP website, does the bouncing ball animation ring a bell?
I think something like this might do it.(GenNumbers 1-100) -> (DivisibleBy 3)yes ->(Bizz) ->(A:DivisibleBy 7)yes->(Buzz)(DivisibleBy 3)no ->(B:DivisibleBy 7)yes->(Buzz)
(B:DivisibleBy 7)no ->(ShowNumber)Reminds me of the old flowcharting days.
--
Thanks for reminding me about the "bouncing ball" - I assume you mean this one: the nice chap who redesigned the FBP web site couldn't figure out how to fit it in... :-) It's only a GIF file, but I think it conveys the idea...
> But I usually get the "wow" look from the folks interviewing me :)
not to be a jerk (but i guess i am a jerk)
but i think that mostly
just means they don't know very much; people who are into animation
(e.g. games)
would be worried about how do you control the system so
that e.g. only red shows at 3 seconds after the start,
or they all
merge on top of each other after 10 seconds,
or whatever else
*artistic* and *planned* thing should happen
-- even if there is fun
randomness *otherwise* to make it look good and take the labor off the
back of the programmer to script each and every millisecond. so a tool
that is utterly random isn't much help. $0.02
>> but i think that mostly
>> just means they don't know very much; people who are into animation
>> (e.g. games)
> Oh this is not about animation my friend. I only use minimal
> animation to show the IP flow.
i think i'm not doing a good job saying what i mean. :-)
what i mean is, not about the fbp graphical tool. i mean about how do
you sell fbp, and impress somebody or more importantly really prove it
is good, not just impress with "now how much would you pay" whizz bang
dog and pony.
each target person probably has a different background, different
needs, etc. so for some people the demo you have is cool and does the
job. for other people -- these are what i'm trying to get at -- it is
more of a "so what" since it appears to be generating uncontrollable
behaviour.
> So raould, can you share with us your own favourite FBP application that showcases
> the async capability of FBP? I said this before, and I say it here again: use FBP to
> solve a real life problem that affects YOU. Yes YOU yourself! Until YOU do that
> there is no buy in from you. If there is no buy in from you then why bother to spend
> time with FBP? I don't care whether it is JavaFBP or NoFlo or GoFlow or whatever,
> as long as it incorporates FBP ideas (ok, with lots of async stuff that can utilize
> the multiple cores).
yes and no.
:-) at least i sure hope not everybody takes your stance
like that, although i do not think you are disallowed to take such a
stance;
--
> The other attached graphs generate controllable, async behaviours :)
>
> I am too lazy to explain the other two. Me bad. I did go through one
> in the meetup!
ok thanks, that's great to hear, i think that's a good thing to use to
"sell" fbp.
>> yes and no.
> Care to share the "yes" part?
i only meant that i agree & disagree with your stance.
i have not done FBP work. i have used erlang, clojure, haskell, and a
little bit of gpars, none "in anger" as the kids on my lawn might say,
only for small time personal edification.
Erlang is the "king" of event processing I was once told in the Tcl Wiki.
Dumb question: how is the event processing engine in Erlang compared
to node.js?
--
Maybe the term port was badly chosen, i have no experience with Tcl, but i'd like to know the architecture and techniques you used, and if feasible make a perl version for the fun of it ( and massive module ecosystem ).
The (b) type corresponds to (i) the load balancer node and (ii) the traffic cop node.
P.S. When my prezi is ready I'll let you know.
On Wednesday, March 19, 2014 at 1:54:23 PM UTC-4, Matthew Lai wrote:The (b) type corresponds to (i) the load balancer node and (ii) the traffic cop node.
Minor quibble here - the load balancer does do something slightly illegal, but I think it's a different illegal: it looks at the number of IPs currently in each of its downstream connections, to decide where to send the current IP, but I can see why you spotted that it was abnormal! :-)
P.S. When my prezi is ready I'll let you know.
Looking forward to it!
I have linked one of the jsfbp issues to this topic, Matt, it would be great if you could jump in - somewhere! The issue is at https://github.com/jpaulm/jsfbp/issues/14 .