The 'Visual Programming' Silver Bullet
App Inventor is a tool from Google Labs that is intended to make it easy for non-programmers to create mobile applications for Android-powered devices. What's missing in this is the word "good", as in " make it easy for non-programmers to create good mobile applications."
Not that you need a degree in computer science or mathematics to create mobile apps, but it does help at times. Far too often, as reader James Kosin correctly points out, "easy" translates too easily to sloppy and bloated, as in code I write. But then high-level tools like App Inventor are supposed to prevent that as well.
Instead of writing code with App Inventor, you visually design the way the app looks and use "blocks" to specify the app's behavior. Blocks are available for storing information, repeating actions, and performing actions under certain conditions. Even blocks to talk to services like Twitter.
The concept of blocks that encapsulate functionality isn't anything new. LEGOs MindStorm, for instance, implements similar functionality but in "bricks." Similarly, Apple Computer, led by Smalltalk guru Dan Ingalls, developed Fabrik ("Fa-brick," get it?), a kit of computational and UI components that you "wire" together to build new components and applications.
And when your talking about visual programming with blocks, you should, as Ron Martin reminded me, mention what is probably the most mature such system -- LabVIEW.
The blocks editor that App Inventor uses is the Open Blocks Java library for creating visual block programming languages. Open Blocks is distributed by the MIT and derives from thesis research by Ricarose Roque. OpenBlocks lets developers build their own graphical block programming systems by specifying a single XML file. Open Blocks visual programming is closely related to the Scratch programming language, another MIT Media Lab project.
The compiler that translates the visual blocks language for implementation on Android uses the Kawa Language Framework, a framework written in Java for implementing high-level and dynamic languages and compiling them into Java bytecodes, and Kawa's dialect of the Scheme programming language, developed by Per Bothner and distributed as part of the Gnu Operating System by the Free Software Foundation.
When it comes to software development, there's something gripping about the word "visual". It's routinely used in instances that are not visual in any sense of the word, although some uses are more visual than others. One of the true visual programming languages is Cube developed by Marc Najork. As Marc has pointed out, "a true visual-programming language can be considered 'executable graphics,' with no hidden text." So is App Inventor a true visual language that will enable programming for non-programmers? That remainds to be seen. What do you think?