If you hang out with programmers enough, one of the first things you’ll notice is their very, very closely-held belief that their favoured programming language is the only correct one.
Simple questions on sites like Quora or Reddit like “what programming language should I learn” prompt long, thoughtful essays on why you should choose one over the other — that then immediately turn into long, thoughtful debates, and sometimes into short, clipped flamewars.
There’s often not a lot of consensus. Check out this recent comment thread from Reddit for a good example of how these things usually go, in response to an infographic claiming that Python was often the easiest new language to learn:
Python vs. Java is a popular ongoing argument, for instance, as is Java vs. Google’s Go, or Java vs. Ruby, or really Java vs. any other language. Java, an old workhorse of website app development, is both really common and very poorly-regarded, which leads to no shortage of programmers insisting that its time has passed and suggesting a faster, more modern replacement.
More recently, a hot topic has been Objective-C, the language in which most iPhone apps are written, versus Apple’s Swift. Apple is positioning Swift as Objective-C’s natural successor, promising that it’s both easier to write apps with and that the apps themselves are faster. Swift is growing very rapidly, but it’s still a fraction of the overall iPhone/iPad development scene.
A philosophical divide
The debates might seem weird to the non-technical observer, since the programming language is totally invisible while you’re using the app.
Part of it is that programmers want to choose a language with solid job prospects and high salaries, or keep their skills up-to-date for any future employment. Part of it is that coders, especially those more academically-minded, appreciate the novelty and challenge of learning a new programming language and all its foibles.
But a big part of this is that each and every programming language represents a philosophy as much as it does a product.
“Most people have a strong emotional feeling about them,” says Paul Jansen, who manages the TIOBE Index, an influential and closely-watched ranking of programming languages. “The differences between most languages are small and most of these differences are just a matter of taste.”
Meanwhile, developers keep track of rankings of the top programming languages, from places like the TIOBE Index or analyst firm Red Monk, like some people keep track of the stock market: Trying to read the tea leaves to figure out which way the world is moving.
Computers, of every kind, from your iPhone to your HP desktop to your connected Nest thermostat, work exactly the same — they’re “a clock with benefits,” as Paul Ford put it so succinctly in his recent essay “What Is Code?” And with literally thousands of programming languages out there to choose from when you set out to give the computer instructions, all of which have the same result, there’s some analysis paralysis for any project.
Of course, developers don’t always have free rein to choose. Sometimes, they’re working on a project someone else started, which means the choice is already made. Other times, there’s too much of a time constraint to learn something new. Other times, the job is to build a speedy app instead of a reliable one.
But “even then there are always several alternatives that compete with each other. So there is no single best programming language. As a consequence, debates about the best programming languages are most of the time just religious wars,” Jansen says.
There are two other related phenomena that play into this.
First off, community is really important. A neophyte developer who finds the solution to their coding problem in, say, the Google Go community, may well become an active participant in that same community. Which means that when they’re faced with any problem, guess what language they will go to first?
“Motivation, frustration tolerance, social support, and access to expertise are all more important than the raw language when you’re trying to become a programmer,” wrote developer Jesse Farmer on Quora last year.
The benefit is the support of a bunch of experienced, knowledgeable people who are kind enough to make the programming language better and help you with your problem.
But an unintended result here can be developer tunnel vision. If all you hang out with are Go developers, for example, then it’s hard to see a solution to a problem that doesn’t involve Go.
The final factor here is that developers want to protect the time and energy they have invested in learning a language. Just like spoken language, some people are better at learning new languages than others, but it’s still a struggle. If another, objectively better language comes along, then that means they’re obsolete. That results in some natural pushback.
“So everybody defends his/her own language and proclaims it is the best there is to make sure their investment is not lost,” Jansen says.
Business Insider Emails & Alerts
Site highlights each day to your inbox.