Most developers and programmers know more than one programming language, but often do most of their development in just one language. Listening in on IRC channels on people using something other than their favourite language is often quite interesting.
It’s often a common misconception, that their favoured programming language – be that perl, php or java – is the ultimate tool no matter what the challenge is. When they are forced to use something else, a large part of the development process seem dedicated to (a) bitching about how much easier this and that would be in their favoured language and (b) forcing the language they use into looking like their favoured language.
It seems that most developers has a profound belief that once you’ve mastered that syntax differences between languages, you’ve mastered a new language – this in my mind just wrong. A programming language is syntax – but it’s also a small world of connected ideas on how programming should be done.
While you may be able to make minor changes in existing code, you’ve haven’t mastered the language until you change your “style” to adapt to the dialects and language styled used by “masters” of that specific language. Languages do have a history and reasoning behind then, which you need to understand – beyond the syntax. Seeing the differences between procedural and object-oriented languages may be easy, but the differences between different object-oriented languages may be just as large and important.
I used to wonder why Perl programmers could write comparisons to PHP and make Perl the distinct winner and PHP programmers could do the exact opposite. There is however a natural explanation for this – much simplified the Perl programmers show just how badly suited for Perl development (and Perl thinking) php is, just as the PHP folks shows how badly suited to the world of PHP.
While I still have Perl as my primary base, I’m slowly learning to adapt the ideas and thinking in the php world. When posed with a programming challenge, I’m having a harder time comparing which language to use for the job – as it slowly becoming a comparison between oranges and apples – not how bad an orange an apple really is.