MIT App Inventor
appinventor.mit.edu
appinventor.mit.edu
So an "if" statement is a statement piece that has places to plug in a boolean (red) expression piece and two statement pieces. That's structure and interpretation of programming languages for you.
The weakness of the language is the difficulty of representing recursion. I think there was another MIT project that did this well, their program representation was a visual graph where recursion was represented as back edges. This is similar to how the Haskell compiler stores programs internally as graphs. An interesting feature of the visual graph programming language was that all variable and function names are optional (but useful) comments.
I feel that researching and experimenting with non-text representations of computer programs is worth the effort.
Do you perhaps remember the name of the project? This is mightily interesting. I've thought about this many times, that if you represent a program as a graph (instead of a tree) you don't really need 'names' or 'symbols' as such (except to make it understandable to humans), just connections. This allows for a cleaner separation of syntax and semantics, and would make it easier to manipulate programs without having to type.
[1] Example: http://www.techno-stuff.com/AirPressure.htm
That is a fair point, recursion is not directly used very often in conventional programming. However, to me, recursion is the missing link that makes a language a programming language (Turing complete).
There is still work to do to find a better structured representation for computer programs than a string of characters is.
PS. I think your son is old enough and motivated enough to get an Arduino or a Python book and start learning ;) That's about the age I started programming after seeing my dad stare at a blue text-filled screen all night trying to make ends meet as a freelancer.
I'd like to try him with Scratch (http://scratch.mit.edu/) before moving on to text-based programming (if he wants to). Python is a good idea: we could learn it together...
I do have a netduino, and he's seem me working on that, but C# requires a lot of up-front knowledge. Arduino and wiring might be in his range.
He's a bright kid and I've learned a lot just by seeing how he conceptualizes these ideas.
I'm _so_ glad all those "idea types" and "business cofounders" won't need my advice or services anymore, 'cause now they can make their own apps without needing any of us annoying technical types telling them "actually, you can't do that"…
(Who wants to port RAMIS to iOS?)
I would definitely be more interested in this kind of thing if it ran on-device, as well. Like AIDE (which is awesome, btw).
One of the problems I have with AppInventor is that it feels like procedures (in a hidden event loop) are not the right abstraction for the high-level programming model that they are aiming for.
That's not true at all. I'm not aware of anyone who actually did publish anything, but Google didn't stop you doing it.
Here's another example: http://www.crucialthought.com/2011/05/15/publishing-an-app-i...
I think the confusion was that the AppInventor FAQ said you couldn't do it - but only because they didn't provide an out-of-the-box way to do it. That's quite different from banning it (which is what the OP implied).
Edit: and here is a thread about doing it with the MIT hosted version: https://groups.google.com/forum/embed/?fragments=true#!topic...