I think people are xenophobic by nature. Racism, sexism, being exclusionary, are all built into the human genome. Which makes it a foregone conclusion that in the world of software development, there are language zealots. These are the people running around claiming that Language X is better than Language Y for reasons 1,2, and 3.
After listening to me rave about Ruby for hours on end, many people have concluded that I am a Language Zealot, a Ruby Jihadi bent on destroying all Java using infidels. Nothing could be further from the truth — I’m happy to use the best language for the situation. I’ve coded C on embedded set top boxes due to processor and memory constraints, Java server side processes now that no one codes in C anymore :), and Perl when I had to rip through a thousand files quickly.
I’ve quickly become enamored with Ruby primarily because it lets me get my job done better — right now, as a manager, I tend to do more scripting that isn’t performance bound, and Ruby, unlike Perl, lets me do that in a clean, maintainable, dare I say potentially elegant way.
People use languages because they are inherently useful, somewhere, and in those specific situations using another language would be painful, usually from a performance perspective. After all, we are in the business of producing usable applications, not writing elegant algorithms. I would gladly code in C again if I had to write a Ruby extension, I just haven’t found a really good reason to yet. I may trip all over memory allocation — it’s been a while — but I would also hope that my exposure to other languages ends up making my C easier to understand/maintain than it would have been had I only known C.
This is because in learning a new language, I have had to apply the same underlying principles — i.e. expressions, error handling, I/O — that I knew from of my previous language(s), and in doing so I understand those concepts better. I think that the first part of coding is really understanding what you are trying to do — if you know that, it will be concise and maintainable in any syntax.