Scratch: Block-based visual programming language
scratch.mit.edu
scratch.mit.edu
I like Scratch's shape-based typing. If the shape doesn't fit it's wrong type, and you can visually look for adapter to covert it to correct type. For example, IF has hexagonal hole and variable is oval shaped, you see that they don't fit together. So you go through available blocks and find operator > which is hexagonal on outside and has oval holes. It is both brilliant and obvious design in retrospect.
On the other hand, the language doesn't gain much by being visual. It looks like Lua that's chopped up in draggable pieces. You can still make syntax errors but they are silently ignored? The complexity is limited to how much you can fit on canvas. The language doesn't teach anything about abstracting away already solved problems.
The execution environment is great. The only thing I would change there are provided graphics sprites. Even that simplistic cat mascot is too high-definition compared to what you can draw with built-in paint tool. Perhaps if all provided graphics was drawn in that same tool, it would set a better stage for creativity.
It teaches some solid programming concepts and the ability to easily "remix" (aka fork) someone else's code is a great feature.
The only downside is that now she's obsessed with how many likes she is getting on her games once she publishes them.