Blockly is a library for building visual programming editors
developers.google.com
developers.google.com
I cannot say I was ever satisfied in in every context where I saw this model applied. My experience ranges from trivial languages such as this, to compositing software, DAWs or something more sophisticated such as programming-oriented signal generators (where blocks are often used as filters/generators and edges as I/O connectors), to workflow editors...
It "might" look intuitive at first[1], but the network just becomes unreadable as soon as you have more than 10 nodes or non-linear behavior (with edges eventually crossing). Auto-layout just becomes a major problem to be solved. Auto-layout also destroys the visual locality of your program, so it actually goes against the programmer for anything non-trivial. Manual layout is something I do not want to take care of either.
Is any experiment or research being done that goes in a _different_ direction?
[1] I would actually say "less scary". I'm not convinced a simple programming language in the spirit of "BASIC" is less difficult to comprehend in the technical sense.
[1] https://computinged.wordpress.com/2015/08/17/icer-2015-block...
It works for DSLs in video-compositing apps , "learn to code apps" , yahoo pipes like apps or VST plugin coding apps ( and to a certain extend you could argue that working with DAWs is programming, I mean Logic has some kind of visual programming environment, so does Ableton Live)
It doesn't work for anything complex that would be normally be done via typing actual code.
I mean it has always been the case.IMHO Anyone that says he can invent something that can replace typing instructions in a text editor[1] and give a better experience to a professional programmer that way is lying.
But VISUAL PROGRAMMING is great for learning how to code, I learned coding, OOP and all that stuff in Flash 15 years ago, dragging and dropping some stuff and seeing the result visually in a matter of micro seconds was enjoyable, felt rewarding and motivated me to explore programming further. It was a shoehorn into the world of programming.
1: It doesn't mean one cannot improve text editors and IDEs, I think there is a whole LOT of room for improvement in order to make typing programs painless, and I'd like to see more research and experimentation done in that specific area, because it feels to me we're still stuck into BORLAND era when it comes to IDEs and nothing has evolved since that time.
It might not be a completely professional grade platform, but I think it's a good proof of concept of how plain-text programming can build good sig
For instance, in a video-compositing application (something like nuke - to put a name) it makes sense, especially so you can represent/preview the state of the filter in the block itself, but it's far from being an efficient method to input or manipulate. If you have experience by programming in any classical language with a grammar, it should be self-evident.
I find myself thinking I could represent the same graph in a much more compact and logically structural way using a written grammar, albeit doing that loses some given visual aspects like previewing.
I was explicitly asking if there is anything else available.
It's analogous to putting all your code in a single source file versus splitting it into logical components across multiple files.
There is something nice about being able to organize the flow of process and logic in a spatial way. It's easier for me to recover from a 1 year break on a grasshopper script than a 1 year break on a typical code base.
Circuit-based skins work well in the right context. Do a Google Image search for "unreal blueprints" to see many examples of them in use. Blueprints visual scripting probably powers the high-level logic in a video game you or someone you know has enjoyed.
The other popular approach is fill-in-the-blanks, a visualization that looks more like a tree than a graph. The first good version of this I saw was the Warcraft 3 scripting system. It inspired the visual scripting system we built for Tribes, SWAT, and the first Bioshock back in the day.
You can also follow Eve for some modern experiments along these lines: https://github.com/witheve/Eve
The classical example I give when I ask this question, is how do I represent the concept of an abstract "record" (or structure) in any visual language. How do I convey the mapping from definition to instance of any given construct?
These are though problems to represent in a visually compelling and useful way.
https://i.imgur.com/B6qFqww.gif
The blocks nest four deep. It's a good illustration of how hard hard it is to make graphical programming easier than regular programming.
[1] https://blockly-demo.appspot.com/static/demos/plane/index.ht...
(def seats (+ 2 (* 4 first-class-rows) (* 5 second-class-rows)))Or for iPads there is the Tickle app: https://tickleapp.com/
and of course the code.org site which I believe uses Blockly: https://code.org/
Source: I worked on the original "Hour of Code".
Source Code: https://github.com/code-dot-org/code-dot-org
Notable project: https://www.codeforlife.education/rapidrouter/ (developed by Ocado) and here's the github https://github.com/ocadotechnology/rapid-router. I've developed a couple of features and I have to say it has been a fun experience!
https://www.allcancode.com/runmarco
(in the CWS https://chrome.google.com/webstore/detail/run-marco/objdeaib... )
Worth checking out if you have a child and you're looking for a lightweight web based programming intro.
So far, my results are pretty promising. I do two groups of two kids at a time, so I can give them tons of help and advice, and for the hardest levels they tend to copy ideas from the other group, but so far both sessions they managed to solve it all the way up to the end (with my help). Coolest part is that their solution for left-hand-search is always slightly different (and more elegant) than what I'd originally come up with.
I haven't created my own material yet, but I suspect I might want to do that at some point.
It would be nice to be able to visually plug a lambda into higher order function. Bonus points if it has some notion of reactive or data-flow programming built in :-)
Is there something like that?
So why not just use python combined with a normal editor instead?
Let's you switch back and forth seamlessly as you learn. Among other features.
https://blockly-demo.appspot.com/static/demos/code/index.htm...