
MIT App Inventor - dfc
http://appinventor.mit.edu/
======
exDM69
I like the ideas behind the app inventor programming language. It has a lisp-
ey look and feel to it. The language is made out of blocks that look like
puzzle pieces. The shape of the piece stands for it's syntactic meaning,
there's a distinct shape for expressions and statements. The color of the
piece is it's type, e.g. red for boolean.

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.

~~~
andyjohnson0
My seven-year-old son has recently been getting his first experience of
programming using the Lego Mindstorms visual programming environment [1]. It
uses a similar 'jigsaw puzzle' representation, and he just found it instantly
intuitive. It has similar limitations to App Inventor, but I don't see support
for recursion as being too important for this type of programming.

[1] Example: <http://www.techno-stuff.com/AirPressure.htm>

~~~
exDM69
>> but I don't see support for recursion as being too important for this type
of programming.

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.

~~~
andyjohnson0
For the time being I'd like to keep the programming he does related to
something physical - like the lego robot you program using the mindstorms
environment. At his age I think he could become bored with just shuffling bits
or putting text onto a screen, and anything sophisticated enough to impress
him and hold his interest (probably graphical) might be to complex. Also the
challenge of physically building a controllable robot is a nice contrast to
the abstract programming task.

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.

------
bigiain
Ahhh, "4th generation languages" come to mobile apps.

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?)

------
kennywinker
This looks like google app inventor reborn, yeah? Seems like a noble goal, but
not implemented in a satisfying way. I'd like to see an example of something
decent created with these tools.

I would definitely be more interested in this kind of thing if it ran on-
device, as well. Like AIDE (which is awesome, btw).

~~~
d4rti
The top hit from google for AIDE is not the AIDE kennywinker is referring to.
[https://play.google.com/store/apps/details?id=com.aide.ui...](https://play.google.com/store/apps/details?id=com.aide.ui&hl=en)
is the Android Java IDE, which is the AIDE referred to.

~~~
kennywinker
Thank you, I didn't take the time to check my googles before omitting a link.
:)

------
ilovecomputers
Is this based on Scratch? <http://scratch.mit.edu/>

~~~
tesseract
<http://en.wikipedia.org/wiki/Google_App_Inventor#History>

------
philip1209
Can anybody comment on its efficaciousness?

------
hypermike
I made their sample app in about 10 minutes, its fun at least.

------
pshapiro
iPhone alternative: <https://blueprint.io>

------
th0ma5
I thought they were going to open source this, but it is still a hosted
software as a service?

~~~
cmelbye
It is open source: <http://code.google.com/p/app-inventor-releases/>

------
nextparadigms
Will they allow apps made with App Inventor to be published on the Play Store
this time? Because I think when Google owned it they said they won't accept
apps made with it on the market.

~~~
nl
_Because I think when Google owned it they said they won't accept apps made
with it on the market._

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.

~~~
zacharycohn
Wrong. Apps made in Google App Inventor could not be published to the market.

~~~
nl
Here's how you did it: [http://appinventor.blogspot.com.au/2011/04/how-to-
publish-ap...](http://appinventor.blogspot.com.au/2011/04/how-to-publish-app-
iinventor.html)

Here's another example: [http://www.crucialthought.com/2011/05/15/publishing-
an-app-i...](http://www.crucialthought.com/2011/05/15/publishing-an-app-
inventor-app-to-the-android-market/)

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...](https://groups.google.com/forum/embed/?fragments=true#!topic/appinventor/0orRcSKTUQ4/discussion)

