An interesting point from this BBC article on a free programming tool called Scratch from the MIT Media Lab that's designed to be (intellectually) accessible and "allows anyone to create their own animated stories, video games and interactive artworks" by 'snapping blocks together':
"A program doesn't congratulate you for the 90% that you got right. It fails for the 10% you got wrong. So an environment where you are essentially assembling components that can only be configured in set ways takes some of that hardship away."
Learning to interpret obscure compilation errors that don't even necessarily relate to the line that contains the actual error really isn't the easiest way to get started (I'm looking at the C-like languages here, yes, even you, PHP). It makes the early stages of programming more about attention to detail than intelligence or elegance, and that puts off lots of people who could probably be great programmers.
The article also lead me to http://hacketyhack.net/, a site which "teaches children to code in a language called Ruby. There are seven free lessons, including one that allows them to develop a blog with just six lines of code."