Disclaimer: I do not intend the following as a criticism.<p>Can somebody explain why these Scratch-like GUI programming efforts always seem to invent their own language? Why not build ASTs of a "real language" with such a system, and take advantage of its ecosystem? Is there some reason why implementing drag-and-drop blocks is, at the very least, synergistic with building an entirely new VM? It seems to me that you should be able to build Lisp or Python very easily, and hence bridge the gap to "real programming".