Today, the topic of Visual Programming happened to come up a couple times and I thought a discussion of the various (available) options would be interesting.
The one that I was immediately familiar with is Automator, which will be released with Tiger (OSX 10.4). Granted, this may not be a purely visual programming language, it does make the process of task automation painfully simple. My simply specifying a couple functions, matching up their input/output types (for example ‘image’, ‘url’, etc.) you can create a reusable script for your personal use. I’d imagine that something like this would play well with power-users/programmers who want to get the most of their data.
In anticipation for Automator (and Spotlight), I’ve begun the process of keeping my personal data in the Apple-sponsored applications (for example, Mail, iPhoto, etc.) and keeping a duplicate version always available online (Gmail, Flickr, Delicious, etc.) just in case. My hope is that by keeping all of my data centrally located, the process of task automation (even visually!) will become that much easier, but I digress.
Josh pointed out another visual programming language: RCX Code, the code behind Lego Mindstorms. Apparently there are two ‘frontends’ to developing for Mindstorms: 1) Targetted more at people who are not readily familiar with programming, a visual interface for developing an application (some example, and exciting, screenshots). 2) The raw code, obviously for the heavy-duty programmer.
What intrigues me about this particular interface is how Lego takes the complex processes of threading, synchronization, and looping (granted, not complex, but for a beginner, it could be daunting). Threading is represented by two columns of blocks, side-by-side, each one containing a process which needs to be completed. Once the code is compiled, the complex threading gets broken down and made such that even the basic controllers in the Mindstorms can handle it. Also, for looping, a large block is chosen, designed to repeat a number of times. Mini block processes are then dropped into the larger block, all of which will repeat those given number of times. I find this to be intriguing and I wonder how many young programmers are growing up with this as their foundation. As with the Apple computers and Logo of old, maybe these languages are leading the way for a whole new generation of developers.