Is there something wrong with the drag and drop approach? I find that working with kids on programming lego robots through their drag and drop approach is fairly engaging to them and does communicate concepts pretty well (loops, arrays, variables and so on). Of course you need to move them to a more "grown up" syntax eventually, but I suspect that comes as they need to solve more complex programs.