Comments (4)
from drawfbp.
Hi Paul,
I believe that you are convinced that FBP is a novel general purpose programming technique which can ease developement and reduce complexity. Yet here you throw up your hands and say that FBP is not a good fit. I think you may be disuaded, however, not by the dificulty of the problem, but by the GUI frameworks which you have been subjected to.
Modern GUI frameworks on the desktop are all written in what is refered to as OOP-Callback style. You have objects, such as buttons and text areas, which have event handlers(methods) which get called when some external event source calls them.
This technique is quite a natural one, and can seem like "the only way" to a person who is familiar with it. However, there are other ways of providing a graphical user interface which don't look like this at all. For example, users can interact with CGI powered web-pages and in this case, the server, rather than having a spider web of callbacks, sees itself as basically a single function/actor which takes a requst and produces a responce:
Client <-> Server
responce = f(request)
This request and responce model is far more simple than the OOP-callback method, and is more generic/flexible (you can implement the OOP-callback architecture in a webserver but you don't have to).
Would you consider FBP to be a good paradigm for writting a web server? If your answer is yes, is there a fundamental difference between that and writting an interactive editor?
Another example of a GUI architecture is that of OpenGL. OpenGL has an event loop which is usually triggered by a timer. Basically, your program runs by having its "draw" method called over and over again. This is also far simpler than the OOP-callback method. I think that the reason why we don't all write our GUIs in OpenGL has to do with edge cases, like the need to provide support for braille displays and screen readers. Otherwise, thinking about simply producing a changing image in responce to an event stream seems quite appealing to me.
If you think about the distinction between the client/server architecture and the OOP-callback architecture for GUI design, you will find that they have a very different shape.
OOP-Callback programs look like octopi (right click to view full size):
Where-as OpenGL draw loop programs look like hammocks.
My interest in the architecture of DrawFBP is somewhat accademic. I don't care how it works on the inside from the standpoint of the user. I'm more interested in how you solved the various interesting problems which occure in the real world ;) .
One project which did do interactive GUIs using discrete-packet data-flow was the early versions of elm-lang http://elm-lang.org/ http://elm-lang.org/assets/papers/concurrent-frp.pdf Don't get put off by the letters "FRP". When reading "FRP" just say "ladedadeda" in your head and everything will make sense.
from drawfbp.
from drawfbp.
I have posted a new topic here: https://groups.google.com/forum/#!topic/flow-based-programming/CvXEkdQ-SIc
Unfortunately, it is extremely time-consuming to embed images in google groups(at least on my machine the google groups software runs incredibly slowly) and so for now I have not moved my post over there.
Regards,
Timothy
from drawfbp.
Related Issues (20)
- Associating the drawfbp.bat file with the .drw extension HOT 2
- What is generating a `drawfbp.bat` file in `build\scripts`? HOT 1
- Attached Classes to components vanish in V2.22.1 upwards HOT 2
- Vanishing arrows at least in V2.22.0 upwards HOT 7
- Selected subnet name gets wrongly attached to component HOT 1
- Wrongly generated class name for component Subin/out in C# mode HOT 4
- Lockup on code generation if port name is missing HOT 4
- Filling in C# classes for a network using C#FBP HOT 6
- DrawFBP modified to use double buffering HOT 3
- Generated code window slow! HOT 4
- Only the last generated code window can be closed. HOT 1
- Edge shading on block remains after block dragged HOT 1
- Two tries to connect arrow to block! HOT 1
- Width of IIP block set to zero when editing contents HOT 1
- Pressing ESC button at wrong time can lose diagram
- Cast error when changing font size
- Dependency Dashboard
- Problem in last few releases: clicking on "canvas" does not bring updesired icon!
- Zoom not working!
- Zoom generally fixed - however cannot detect edges of blocks when zoom not equal 100%
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from drawfbp.