Language Wars and Others
This post originally appeared on the Software Carpentry website.
We often get asked, "Why do you teach [X]? Why don't you teach [Y]?" where X and Y are random permutations of Perl, Python, R, MATLAB, Julia, C++, and Javascript, or equally random permutations of different version control systems or text editors. There are three answers:
We'd be happy to, provided you will create and maintain a lesson that covers the same basic ideas as our existing ones. (Cf. "You Doesn't Exist".)
If you're in the United States, you measure distance in miles and weight in pounds because that's what the people around you use. Similarly, if a community of scientists are using [X] and condition #1 is satisfied, we'll teach our fundamental ideas—task automation, modular programming, version control, and structured data—using [X], because those ideas are what really matter.
When someone says, "Teach [X]," it's almost always because they believe it's better. When asked for evidence, though, they almost always respond with personal anecdotes or the sort of a priori reasoning that led Aristotle to believe that heavy objects must fall faster than light ones. We can do better: we can measure the usability of programming languages through control experiments. And I think that means we have an obligation to: as I've said many times, if we want other people to pay attention to the evidence when it comes to things like climate change, we need to demand and respect evidence ourselves.