I was reading this question, and it really made me question using C# as a starting point for programming. I think this is why people should start with Basic, then move up to C, and then move on to stuff like C++, Java, .Net, or other advanced languages afterwards. I'm a .Net developer, and I seriously think that starting out in .Net would have been a mistake, or at least would have made it much more difficult to get started.
Firstly, just the sheer number of available classes and functions in the .Net API is too overwhelming for a programmer who is just starting out.
Also, I find that especially if you follow the .Net way of programming, that way too much gets abstracted away, to the point where the programmer doesn't understand what's going on behind the scenes. Many programmers of web applications don't even know how things behind the scenes work, and don't understand the difference between client side and server side code, and don't get why you can't write the login code in Javascript.
Starting in basic, and other simple languages allows people to just thing about their own code. There aren't any complicated libraries to think about. Nothing is abstracted away. This means you won't be able to get as much functionality as quickly, but you will understand how things actually work.
What are the thoughts of everybody else? Can you get a good grasp on programming without touching things like Basic and C? Are .Net and similar environments too much for beginners to grasp?