I've been using app inventor on and off for a few weeks now, and its pretty good. As a graphical way of realising code blocks, it does a great job, while still retaining the logical thinking required in real code writing. But, as an educational tool, is it the best way? Surely it isn't very applicable to the real world, and not good for people who actually want to learn to code?
Some developers in the AppInventor forum have created an AppInventor to Java bridge. This means that students who start with App Inventor can use these graphic block components in the Java-based Android SDK. The student can use as many or as few as they like until they start feeling more comfortable with the Java environment, thus graduating the transition. An ongoing project.
More can be found here