flow based programming an overview
TRANSCRIPT
![Page 1: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/1.jpg)
Flow-based programmingAn overview
VisuFlow Stockholm Meetup #1
Samuel Lampa@smllmp
+samuellampasaml.rilspace.org
Developer atwww.uppmax.uu.sewww.farmbio.uu.sewww.rilpartner.se
![Page 2: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/2.jpg)
What is this?
![Page 3: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/3.jpg)
- A call graph! (of my little go app)
What is this?
![Page 4: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/4.jpg)
What if we could take control of this...…and define the graph declaratively? Wow! :)
![Page 5: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/5.jpg)
FBP Inventor J. Paul Morrison
q
Invented at the 60's at IBM
![Page 6: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/6.jpg)
The flow based programming book- A must read
→ tinyurl.com/fbpbook
![Page 7: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/7.jpg)
“In computer programming, flowbased programming (FBP) is a programming paradigm that defines applications as networks of "black box" processes, which exchange data across predefined connections by message passing, where the connections are specified externally to the processes. These black box processes can be reconnected endlessly to form different applications without having to be changed internally. FBP is thus naturally componentoriented”
Wikipedia
![Page 8: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/8.jpg)
FBP vs DataFlow
“FBP is a particular form of dataflow programming based on bounded buffers, information packets with defined lifetimes, named ports, and separate definition of connections.
Wikipedia
![Page 9: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/9.jpg)
An array of benefits ...● Change of connection wiring
without rewriting components
● Inherently concurrent - suited for the multi-core CPU world!
● Testing, monitoring and logging very easy: Just plug in a mock-, logging- or debugging component.
● Etc.qq
![Page 10: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/10.jpg)
Many similar tools: Unix pipes
![Page 11: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/11.jpg)
Many similar tools: LabView
![Page 12: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/12.jpg)
Many similar tools: Yahoo Pipes
![Page 13: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/13.jpg)
Many similar tools: Apple Quartz Composer
![Page 14: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/14.jpg)
Implementations
● Java (JavaFBP)● C# (C#FBP)● C++ (Dspatch, Blockie.io) ● Javascript (NoFlo, Node Red)● Go (GoFlow)● Python (PaPy)● Common lisp● Shell script (net2sh)● D (Dendrite)● …?
![Page 15: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/15.jpg)
Resurgence in FBP interest with NoFlo
![Page 16: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/16.jpg)
![Page 17: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/17.jpg)
NoFlo creator Henri Bergius
![Page 18: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/18.jpg)
NoFlo summary
● Based on Node.js● Written in coffeescript● 237 reusable components● Successful (116% of 100k USD) Kickstarter for
in-browser UI● FBP definition format in JSON● Proof-of concept:
Re-implementation of Jekyll Static site generator: 16 000 LOC 107 components→(4 custom ones of ~500 LOC, rest re-usable!)
![Page 19: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/19.jpg)
Book on Data Flow, FBP and Reactive Programming
![Page 20: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/20.jpg)
Node-RED
![Page 21: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/21.jpg)
Blockie.io
![Page 22: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/22.jpg)
My adventures in GoFlow
![Page 23: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/23.jpg)
My adventures in GoFlow: Network
![Page 24: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/24.jpg)
My adventures in GoFlow: Component
![Page 25: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/25.jpg)
My adventures in GoFlow: Aspiring bioinformatics library :)
![Page 26: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/26.jpg)
Some links
● Main website:
www.jpaulmorrison.com/fbp● Mailing list:
tinyurl.com/fbplist● Google+:
gplus.to/flowbased
![Page 27: Flow based programming an overview](https://reader034.vdocuments.mx/reader034/viewer/2022042714/55562e01d8b42a28608b4afb/html5/thumbnails/27.jpg)
Thank you!