Those of you who have also read my posts at ReadWriteEnterprise know I have an interest in visual programming: the process of programming by manipulating graphical objects instead of writing text.
Visual programming isn’t a new concept, it goes at least back to 1975 with the Pygmalion language. It’s been advocated in constructionist learning circles but hasn’t really caught on outside of education, except in a few niches. Audio programming environments like MAX/MSP take advantage of visual programming concepts, and more recently mashup creation tools like Yahoo! Pipes and JackBe Presto have adopted the paradigm.
Pygmalion screenshot
But will visual programming ever have a life outside of education and a few specialized uses? More specifically, will it ever be possible for the average user to build their own apps using visual programming? Critics have mentioned various problems with the paradigm, not the least of which is that programming is hard. Joe Hughes comments on a post by Adam Greenfield on the subject:
As someone who once built a boxes-and-lines visual programming environment, in the end I’m not sure how easily the average “mom” could be led to think with the rigorous logic of a programmer, no matter how much the task is dressed up using English-like statements, appealing bricks, or lovingly simulated patch cable physics. Specifically, the layperson needs to climb up a steep learning curve to even have a clear understanding of what they could reasonably ask of such a system.
An illustration of this is the data visualization application Impure. Impure, still in alpha, hopes to provide a set of data visualization tools for non-programmers. But it’s hard to describe, at this stage anyway, Impure as something that’s entirely easy.
None the less, I’ve had, up to now, a sense that a super-easy programming environment was a worthwhile endeavor, regardless of how difficult it is.
But thinking about the case Douglas Rushkoff makes in his newest book Program or be Programmed makes me question whether visual programming, as anything more than a learning tool, might be counter productive. Rushkoff makes the case that programming is the new literacy. And “computer literacy” is no longer enough – one needs to be able to write code, not just operate a computer.
The problem, then, with something like a better, easier version of Google App Creator is that it doesn’t go far enough. Even if everyone is able to create their apps, would they be truly “literate”?
I suppose the question resides on how important the code – even relatively high level code (compared to machine code or assembly) – really is. Based on the interest in learning JavaScript visually, it’s clear that even experienced programmers find the approach useful at least in learning. But, assuming performance and dependencies wouldn’t be significant issues (a big assumption) would you ever want to build entire application using a visual programming language?
A related concept is literate programming: the process of coding in way that’s more like human thought. One notable implementation is CoffeeScript, which actually compiles into JavaScript. It sounds like a nice way of coding – and possibly of teaching programming. But would someone who learned to program with CoffeeScript be truly “code literate”?