Just my grain of salt:
Programmers in general aim to improve the way they code over time. Practices improves, or try to improve to make code better, easier to read, easier to maintain. And even if we would like to refactor everything we make to keep it consistent and nice and sweet, in the end it's just plain impossible since it's always changing. So having this sort of debate, while not pointless since it's very good and productive to aim to improve things, will in some way always be biased since whatever you do will be obsolete in a mater of time. My philosophy in this is to continue to work hard learning to make better code even in the reality of deadlines and lack of resources etc.
Bashing a very working language has not much point. Pointing it's weaknesses in the objective of correcting them one day or not making the same error twice is quite more interesting. You can bash all you want on C, C++, C#, they all have their plus and minus, and they all have been very useful and still are.
And if you want to try a crappy language, go have fun with visual foxpro. I have been stuck coding with this language for the major part of the last 5 years. But even if I hate it, even if the code I have been working on was crap to begin with, I still need to do my job and improve things. And when I have the opportunity to code in c#, hell I am not so picky since working with a "true" object oriented language is enough of an improvement to put a smile on my face.