In Scratch, you build your programs out of interlocking puzzle pieces. There are loops and conditionals, which contain a little opening (which expands as needed) to hold other pieces. It basically encapsulates the idea of curly braces. Conditional statements have a hexagonal hole, into which only a conditional test can be fitted. Conditional tests are hexagon-shaped pieces which have oval holes, into which only variables or numbers can be placed.
The upshot is that it’s impossible to make a syntactically incorrect program. There is no way to make invalid code, which allows the would-be programmer to focus exclusively on structure and logic. It’s obvious how everything fits together, so the student gets a feel for program structure without needing to muck about with ideas like scope and indentation. Once they see the real thing (like, some C++ or some Python) they should be able to recognize and intuit what it does instead of seeing it as a big bunch of random symbols and crap.
The language is object-oriented and (this is the kicker) multi-threaded. You begin by dragging little clip art into your scene. You can use the prepackaged art, import your own, or draw something new using their editor, which is only slightly more robust than MS Paint. You can then edit the code for that specific object. You can have it move around, interact with other objects in the scene, respond to keyboard or mouse input, or passively wait for events triggered by other objects.
Sounds like a great way to teach programming to kids.