The App Inventor lets anyone create an Android application without having to learn to program - or so they might think. Is this the way mobile development will go?
Just when you thought mobile development couldn't get any easier Google introduces App Inventor.
"To use App Inventor, you do not need to be a developer. App Inventor requires NO programming knowledge."
The basic idea is borrowed from the Scratch programming language aimed not simply at teaching children how to program but also making them enthusiastic about the idea. Instead of having to write code using a text editor the program is constructed by dragging-and-dropping blocks that represent actions.
The usual programming constructs - loops and conditionals - are also created using blocks joined together in ways that mimic the flow of control in a program The whole environment is graphically pleasing and the idea is that users can create programs without having to type or learn a traditional programming language. Of course, even if the user doesn't learn a programming language they are still absorbing the fundamental ideas of programming and learning to think algorithmically.
The App Inventor takes the blocks idea as used in Scratch and adds block that are specifically designed for mobile phone development such as blocks that talk to online services such as Twitter and blocks to use phone hardware such as GPS location blocks. Users can quickly create applications that send texts, answer the phone, read text aloud and so on.
There is also a drag-and-drop user interface designer that works in much the same way as any designer. The only difference is that instead of there being "code behind" there are "blocks behind".
App Inventor in action
The team leader Harold Abelson is on sabbatical at Google from MIT - the original source of the idea of using computers as educational tools.
As well as lowering the bar to getting started with Android programming so that users can swell the growing number of apps that are available, there is a deeper objective behind App Inventor. The documentation stresses its use in an educational setting and the FAQ has questions like:
"Does my class need to provide a phone for every student?"
If the idea of equipping a class full of children with mobile phones so that they can learn to program sounds crazy to you, then think again - this is a really good idea! For many years the problem has been to get children motivated to learn programming. The problem is that any off-the-shelf application or game is way ahead of anything they can produce in a few tens or hundreds of lines of code. Thus programming isn't immediately rewarding and so it's not "fun".
There have been lots of attempts to make programming more immediately rewarding using game construction kits and projects like Scratch - but what could be more instantly rewarding that spending five minutes and creating a ring app that pops up a photo of a cat and meows when a call comes in. In no time at all personal ring apps would be all the rage and learning to think algorithmically would be a cool pursuit!
Given that mobile phones are hugely attractive to children and adults alike this could be the environment to nurture programming skills.
It is obvious that this is a good idea and the payoff for the Android platform is that lots of children will want one to show off their latest cool app - not one that they have bought from the app market but the one they have just created.
The only real question is why haven't Apple thought of this using the iPhone. The obvious answer is that they will now.
App Inventor is currently in beta and, sadly, its use is by invitation only. Sign up to join the queue!
This is the time of the domestic robots, but they aren't like Rosie from the Jetsons. They aren't general purpose machines but are specialized to one task. Now Robomow has a robot that does three dome [ ... ]
We already know the dates and venue for Google I/O 2014 - it will take place June 25-26 at Moscone West in San Francisco. Now that the event's website has opened there's some more information - b [ ... ]