I, personally, started with BASIC, then C, for the most part. People make too much of a push for object-oriented programming when it comes to beginners, especially since most people don't know how to teach these concepts. I, myself, was a bit of a victim of that nonsense; I was initially taught C++, and I wasn't taught right. The only buzzwords people were using were "objects" and "inheritance", and when I was finished with the course, I had a library with everything being an object, even things that shouldn't be objects. I had objects that had no data, or a need to share the same namespace, just a group of helper functions that were hardly related and poorly constructed. People were so busy trying to push OOP principles that they failed the most important lesson: _why_ it is such a great feature, and how to use it.
It wasn't until after of years of C that I realized how an object-oriented language would make my life so much easier, and that it is such a great construct. I still use C, but I gained an appreciation for OOP when I had to go through the pain of implementing various object types that would have been better done in an object-oriented language.
It's like giving someone a fork, before they have ever tried eating anything. They might hold the fork awkwardly, and manage to eat some things well. They'd eat fries with it, pizza with it, hamburgers with it, ice cream with it, cereal with it, soup with it, water with it... If they don't understand why they have the fork, just that they are supposed to use it, they'll use it on anything and everything, even though sometimes it is better to use their hands, or another tool, instead.
For this reason, I cast my vote for C. If one cannot recognize the need for an object-oriented language, and how best to use it, they'll learn bad habits. If one teacher can successfully teach OOP and have a student use it in a way that years of experience would teach, then I'd commend them, because I see years after years of students making anything and everything an object with public members of everything, no setters or getters, having them circularly dependent, with _everything_ as a singleton, and all other abominations because they don't know _why_ they should use these tools that they have. It's just been drilled into them that this is the way to do it.
Edited by Ectara, 14 September 2012 - 11:06 PM.