What is the opinion of the group as to whether Labview would be considered an implementation of Flow Based Programming? If you agree, what would you say are the pros and the cons of the Labview approach?
Thanks!
--
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.
Just curious - what do you mean by "ad hoc side-effects"?
TIA
Paul M.
What is the opinion of the group as to whether Labview would be considered an implementation of Flow Based Programming? If you agree, what would you say are the pros and the cons of the Labview approach?
Implicit synchronization == bad.
2. I, also, don't get the impression that LabView is hierarchical, e.g. can you write LabView components that implement new LabView components?
3. I have seen (some) LabView in use. The diagrams are all over the place (too low level, some high level, weird (IMO) sequencing of diagrams). Not clean enough for real programming... (IMO)
On Thu, Aug 8, 2013 at 3:47 PM, Paul Tarvydas <paulta...@gmail.com> wrote:
Implicit synchronization == bad.
I'm not inclined to agree. Why do you believe so?
2. I, also, don't get the impression that LabView is hierarchical, e.g. can you write LabView components that implement new LabView components?
You can. They call them "SubVIs". Tutorial: http://www.ni.com/white-paper/7593/en/
3. I have seen (some) LabView in use. The diagrams are all over the place (too low level, some high level, weird (IMO) sequencing of diagrams). Not clean enough for real programming... (IMO)
Lol. Quite a few people recognize "real programming" in terms of how unclean it tends to become.
I've formed the opinion/observation that a lot of problems in s/w are due to unnecessary synchronization (e.g. call/return), which have resulted in epicycles like preemptive multitasking which result in further epicycles, or the inability to test components independently, etc.On 13-08-08 07:40 PM, David Barbour wrote:
On Thu, Aug 8, 2013 at 3:47 PM, Paul Tarvydas <paulta...@gmail.com> wrote:
Implicit synchronization == bad.
I'm not inclined to agree. Why do you believe so?
IMO, the one-way asynchronous event is the "atom" of software (or, better, the "aetheron" :-).
Is it that the operations are much too low-level? Employing Multiply and Add components is silly (IMO). A text expression is completely sufficient for such operations. (Admission: we did create such low-level components at first, but that was like 20 years ago).
In my mind there is a definite chasm between brick-laying (text languages, the SubVIs examples, etc.) and architecting. It's clear that I cannot express that difference well (other than by apprenticeships :-).
--
Synchronous and asynchronous data flow are somewhat different programming models and both of them have their benefits. I haven't yet programmed any real world applications with pure asynchronous data flow, so it's hard for me to analyze the challenges.
Observation: One doesn't see FBP-ers discussing priority inversion, nor priorities, nor race conditions, etc. These problems aren't encountered (much) when thinking fbp.
+1: So, maybe the only thing we need to do is to make Software work like Digital Hardware. [...]
asynchronous components need to be truly asynchronous - not implicitly coupled by call-return
FBP box and wire diagrams are functional. FBP leaf-level components are (can be) stateful. The best of both worlds with no need for confusion! :-).
I, also, put huge value on the ability to draw concrete, compilable diagrams - for Architecture, documentation, future maintenance and communication between stakeholders (not just technical people, but communication with management and (non-programmer) domain experts). Likewise, the simplicity of the notation and the designs which emerge when thinking fbp. My intolerance for text-only languages grows inversely proportional to the responsibility I acquire.
+1: So, maybe the only thing we need to do is to make Software work like Digital Hardware. The rest is "easy" and already well-documented. Brad Cox took a stab at this idea with his "Software IC" concept. And the Smalltalker's did so too. They missed the idea that asynchronous components need to be truly asynchronous - not implicitly coupled by call-return.
The following white paper on how LabVIEW compiler works is worth reading:
Unfortunately many business functions are extremely difficult to express as
subroutines - but we were told "computers can do everything", so,
obviously, if we found such functions difficult to write, it was *our*fault, not the fault of the paradigm! So people were essentially
brain-washed not to consider alternatives -- especially not solutions which
would question the basic von Neumann paradigm.
FBP-thinking strips off the epicycles and, as Bugs Bunny used to say, we should'a turned left at Albuquerque...
On 17/08/2013 11:41 AM, Paul Wareham wrote:
I argue that FBP-thinking strips off the epicycles and, as Bugs Bunny used to say, we should'a turned left at Albuquerque...