Hi there, I've been reading up on a programming model referred to as Flow-Based
Programming (FBP).
[http://www.jpaulmorrison.com/fbp](http://forum.nim-lang.org///www.jpaulmorrison.com/fbp)/
[https://en.wikipedia.org/wiki/Flow-based_programming](https://en.wikipedia.org/wiki/Flow-based_programming)
I'm wondering if any of you have implemented something like this in Nim?
Central to FBP is the concept that **data** is to be seen as the primary
"thing" in an application, This "thing" moves from one process to another,
undergoing a constant series of transformations.
Processes receive and send packets of information between each other.
The sole purpose of a process is to transform the data it receives into another
form, before sending it off to another process.
A few other highlights:
1. A process has IN and OUT channels (kind of like a socket's receive and
send)
2. Processes are connected together (ex: connect("ProcessA.OUT",
"ProcessB.IN") to create a network of interconnected processes
3. Data (Information Packets) is received by the receiving process(es) in the
order in which they were sent by the sending process
4. Once they have finished transforming the data they have received, a
receiving process sits iddle until new data is sent to it.
I could see model working well for making the jump from process diagrams into
code implementation, almost having a 1:1 relationship. Well, especially in my
line of work as a IT Biz Analyst where we do a lot of process diagrams. Mapping
a process diagram to a process using this approach would seem trivial.
The only thing is I'm not quite sure how to implement this in Nim (well, in any
langauge in general).
The author of "Flow Based Programming", Paul Morrison, pointed me to a couple
of implementations of this approach:
[http://www.jpaulmorrison.com/fbp/jsyntax.htm](http://forum.nim-lang.org///www.jpaulmorrison.com/fbp/jsyntax.htm)
This approach has been implemented in Java, in C++, Javascript. He tells me
implementation of this approach depends on the language being used supporting
threads (which I know Nim does). But I have to admit I'm not strong enough a
programmer to figure it out on my own.
So if anyone is interested, and have a few ideas or pointers, I hope you don't
mind chiming in!
Regards,