Channels ▼

Jonathan Erickson

Dr. Dobb's Bloggers

The 'Visual Programming' Silver Bullet

July 13, 2010

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?

To get started with App Inventor development, fill out this form. More information is available here.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.