Flow based programming an overview

2,990 views

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,990
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
32
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Flow based programming an overview

  1. 1. Flow-based programming An overview VisuFlow Stockholm Meetup #1 Samuel Lampa @smllmp +samuellampa saml.rilspace.org Developer at www.uppmax.uu.se www.farmbio.uu.se www.rilpartner.se
  2. 2. What is this?
  3. 3. What is this? - A call graph! (of my little go app)
  4. 4. What if we could take control of this... …and define the graph declaratively? Wow! :) qq
  5. 5. Invented at the 60's at IBM q FBP Inventor J. Paul Morrison
  6. 6. The flow based programming book - A must read → tinyurl.com/fbpbook
  7. 7. “In computer programming, flow­based  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  component­oriented” Wikipedia
  8. 8. 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
  9. 9. 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-, loggingor debugging component. Etc. qq
  10. 10. Many similar tools: Unix pipes
  11. 11. Many similar tools: LabView
  12. 12. Many similar tools: Yahoo Pipes
  13. 13. Many similar tools: Apple Quartz Composer
  14. 14. 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) ● …?
  15. 15. Resurgence in FBP interest with NoFlo
  16. 16. NoFlo creator Henri Bergius
  17. 17. 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!)
  18. 18. Book on Data Flow, FBP and Reactive Programming
  19. 19. Node-RED
  20. 20. Blockie.io
  21. 21. My adventures in GoFlow
  22. 22. My adventures in GoFlow: Network
  23. 23. My adventures in GoFlow: Component
  24. 24. My adventures in GoFlow: Aspiring bioinformatics library :)
  25. 25. Some links ● Main website: www.jpaulmorrison.com/fbp ● Mailing list: tinyurl.com/fbplist ● Google+: gplus.to/flowbased
  26. 26. Thank you!

×