Here's a crazy idea. Let's teach Ruby in intro programming classes instead of C, so as not to frighten away 90% of the population with pointer dereferencing and segfaults. You should teach C eventually to make them appreciate high level languages, but just not right away.
We teach Shakespeare and Calculus in high school, though those are certainly not the easiest choices in their respective fields. For an introductory programming class, I agree that Python is a great choice. However for seniors in a computer science class, C should be a fairly important part of the curriculum. There are some fundamentals of computer science that are best grasped through experimentation with C (pointer…
I think a better analogy is Driver's Ed. We don't throw kids into stick-shift cars in Driver's Ed (at least not at first) we have them drive automatics so they can learn the more important aspects of driving. Then, later on towards the end of the course (well they used to anyway) we have them learn to drive a stick after they've mastered the basics of driving.
Now, personally, I think it's important that the students learn how to drive a stick. But not at first. Same with choice of programming language: I think it's important that the student have some exposure to pointers, dereferencing and even some memory management, but not at first. Let them learn the more important aspects of programming first and when they've become comfortable with them then transition to that other stuff that I'll call "mechanics". Oh, and not every highschool student needs to learn the mechanics, just those who think they want to go onto software engineering.