It's really all about how you teach programming. My first exposure to programming was in high school where a math teacher who had never coded a day in her life was thrown into the position for some extra cash. I witnessed the dichotomy first hand here--and I was clearly in the wrong bell-curve. But that summer, I attended a summer program where it was taught properly. First explaining the context and history of programming, and then exposing us to real world applications. This had a huge rate of success for everyone in that program.
I don't think that the goats will ever go away, but I do think that if taught properly, that the ratio of people who understand to those who don't can be on the order of someone who understands an art history class to someone who doesn't-- or any other area of specialization for that matter.