About programming for the masses, I see two educational reasons to insist on that. One (rather weak) reason is to demystify something that is everywhere. People will be dealing with software all the time and if having done one or two toy applications as a child makes them see that it is not magic then that is nice.
A much better reason is Papert's: so the children will have an object to think with. The idea is to learn to learn but we need a suitable way to talk about learning strategies. Normal school tends to encourage a very poor strategy: take a guess, see if the teacher confirms it is right and if not take another guess. Not only is the search time long and unbounded, you also need some external way of checking your results which is something you won't always have.
Teaching programming is just a way to be able to teach debugging, or successive approximation. You don't throw away incorrect attempts but instead build on them. And you learn to figure out for yourself if they are correct or not, and how far and in what way they are incorrect so you know what to change.
-- Jecel