Scratch: Reducing Syntactic Complexity

Media_httpwwwstrangea_rdhrz
I was looking for inspiration for a good way to do visually-based programming. I have a domain specific language which is fairly straightforward to use but because it contains some of the traditional selection constructs, like if-elseif-then blocks, it suffers from the same kind of complexity that makes most programming languages fairly inaccessible to non-programmers. Basically I wanted something that allowed users, especially non-programming users, to understand and naturally use the iteration and selection within the language, but without having to really learn anything from outside the domain of the language. One approach that I came across whilst skimming back issues of the Communications of the ACM was that used by Scratch, a visual programming language aimed at children and non-experts. Scratch takes the familiar, to programmers, language constructs for iteration and selection and uses well designed visual artifacts that are keyed to only fit together in particular ways. Essentially, Scratch ensures that the basic selection and iteration structures are well formed by treating them as a single visual artifact. Although having already heard of Scratch, the article where I actually started finding out how it worked was "Scratch: Programming for all" which tells the story of how teaching programming is difficult but that some of those difficulties can be avoided by putting play back into the act of programming. If the interface reduces the scope for syntactic errors then the user can put more effort into surprising and delighting themselves by getting their code to do what they want it to do. The most interesting part of the article though repeats the oft-stated aphorism about young people being digital natives but goes further and explains why, although true to a degree, they still need support in developing programming skills so that they can become producers as well as consumers (p. 62)
It has become commonplace to refer to young people as "digital natives" due to their apparent fluency with digital technologies. Indeed, many young people are very comfortable sending text messages, playing online games, and browsing the web. But does that really make them fluent with new technologies? Though they interact with digital media all the time, few are able to create their own games, animations, or simulations. It's as if they can "read" but not "write".
This, I think, exactly captures the issue. People need to become betters writers in the digital landscape rather than just readers. This realisation doesn't alter the situation but it does put it very succinctly, and I am left in the position I was in at the beginning, needing a good visual method to "hide the syntax" and allow the user to play with the language, but having looked at Scratch, I think that I have a handle on how to do it now...
Mitchel Resnick, John Maloney, Andrés Monroy-Hernández, Natalie Rusk, Evelyn Eastmond, Karen Brennan, Amon Millner, Eric Rosenbaum, Jay Silver, Brian Silverman, & Yasmin Kafai (2009). Scratch: Programming for All Communications of the ACM, 52 (11), 60-67