
Blockly is a library for building visual programming editors - anonfunction
https://developers.google.com/blockly/
======
tenfingers
Is anyone aware of other visual programming paradigms which are not based on
(or reduce to) the blocks&arrows model?

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.

~~~
aikah
> 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

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.

~~~
golergka
As a software engineer who have spent a fair amount of time building and
modifying ensembles in Reaktor, I don't honestly see how these structures
would be easier to build in code. Their conplexity comes not from environment,
but from the meaning they represent; I doubt that connecting 5 LFOs, 3
oscillators and a step sequencer in VIM would be a much better user experience
then dragging cords with a mouse.

~~~
aikah
How do you think Reaktor itself is coded ? that's the point I made in my
comment.

~~~
golergka
What does this point prove? The point of visual programming is in user
experience of completing appropriate tasks.

------
simoneau
Look at the complexity of the solution needed to solve a simple challenge[1]
on the demo pages:

[https://i.imgur.com/B6qFqww.gif](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...](https://blockly-
demo.appspot.com/static/demos/plane/index.html?lang=en&level=3)

~~~
TJSomething
It's not really worse than a Lisp:

    
    
      (def seats (+ 2 (* 4 first-class-rows) (* 5 second-class-rows)))

------
edtechdev
See also Snap! which is very actively developed and used pretty widely, and
open source: [http://snap.berkeley.edu/](http://snap.berkeley.edu/)

Or for iPads there is the Tickle app:
[https://tickleapp.com/](https://tickleapp.com/)

and of course the code.org site which I believe uses Blockly:
[https://code.org/](https://code.org/)

~~~
brandonbloom
Yup, code.org uses Blockly.

Source: I worked on the original "Hour of Code".

Source Code: [https://github.com/code-dot-org/code-dot-
org](https://github.com/code-dot-org/code-dot-org)

------
emanuelev
In the UK it is used in several schools to introduce children to programming.

Notable project:
[https://www.codeforlife.education/rapidrouter/](https://www.codeforlife.education/rapidrouter/)
(developed by Ocado) and here's the github
[https://github.com/ocadotechnology/rapid-
router](https://github.com/ocadotechnology/rapid-router). I've developed a
couple of features and I have to say it has been a fun experience!

------
anonfunction
Here's a cool demo that is interactive: [https://blockly-
demo.appspot.com/static/demos/plane/index.ht...](https://blockly-
demo.appspot.com/static/demos/plane/index.html?lang=en)

------
Adaptive
I picked up a chromebook for my daughter the other day and was looking for web
based programming apps. I came across "Run Marco", built using Blockly, which
is fairly basic at this point but seems to be under active development.

[https://www.allcancode.com/runmarco](https://www.allcancode.com/runmarco)

(in the CWS [https://chrome.google.com/webstore/detail/run-
marco/objdeaib...](https://chrome.google.com/webstore/detail/run-
marco/objdeaibfajdoeikopmgincdhjifjfle?hl=en) )

Worth checking out if you have a child and you're looking for a lightweight
web based programming intro.

~~~
luvz2code
Check out [http://www.code.org](http://www.code.org), the courses and levels
are well done for beginners in programming. I use it to teach my 6 yr old.

------
mcv
I'm using Blockly to teach basic programming concepts to 6 and 7 years olds in
my son's class. I'm using the maze at blockly-games.appspot.com/maze .

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.

------
a-saleh
I have always had feeling, that this style of visual programming would be
better suited to functional paradigm.

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?

~~~
invalidOrTaken
Email me.

------
lsaferite
Does anyone have a link to the history of this specific visual style? I know
the MIT Scratch project uses the same visuals and I've seen a few other as
well. I've very curious about the history here.

------
chime
It's actually pretty neat. I use it to program the Ozobots
([http://ozobot.com/](http://ozobot.com/)) my wife got me for my birthday.

------
amelius
From this, it seems to me, it is just a small step to an indentation based
language.

So why not just use python combined with a normal editor instead?

~~~
acbart
www.blockpy.com

Let's you switch back and forth seamlessly as you learn. Among other features.

------
anonfunction
Here's the full featured demo with all the blocks:

[https://blockly-
demo.appspot.com/static/demos/code/index.htm...](https://blockly-
demo.appspot.com/static/demos/code/index.html)

