“Why are there so many programming languages?”

by Matt Sherman

on

I was asked this question twice in the past week, by colleagues who work with our clients. It sounds like a dumb question, but it’s not.

The short answer is that we don’t need so many languages, but we want them. Let’s explore this further.

Aren’t they all the same?

In a sense, yes. You can create a web site using Ruby, Java, Python, C#, Go or JavaScript. You can use C or C++ or Haskell or Rust. Or COBOL or Pascal or Perl.

Underlying this fact is that all of these languages serve the same purpose: to turn human thoughts into the 1’s and 0’s that the computer understands. In highfalutin computer terms, they are all “Turing complete”.

At their most foundational level, these languages are all the same. But on the surface – where humans interact with them – they vary a lot. This is where other concerns come into play.

Different tools for different jobs

Programming languages are tools, and we choose different tools for different jobs. A tractor trailer and a bicycle and a Tesla are all vehicles – they have wheels and steering and will get you from point A to point B – but obviously we use them for different things.

Programming languages are similar. Ruby and JavaScript are great for building web sites; Java and C++ are often used for financial trading; Python and R are the tools of choice for analyzing statistics.

Languages often make trade-offs in terms of convenience, safety, and speed – much like vehicles. The trade-off is dictated by the job at hand.

Developers have tastes

Beyond mere utility, developers choose tools based on personal tastes.

A programming language is a tool for humans to express ideas to computers. While we developers have many things in common, there is natural variety in the way our minds work.

Because we have many choices of good programming languages, we can select one that “works the way I think”. Some developers like Ruby’s flexibility, while others prefer Java’s strictness. Where some languages feel like math, others look like prose.

People first

Beyond utility, and beyond taste, businesses run on people. Often, you will choose a programming language based on what you, or the people around you, know.

Stack Overflow chose C# mostly because that’s what our founders knew. In turn, it’s what the founders’ friends and colleagues knew. Which made recruiting easier, and allowed Stack to get to market more quickly.

(Luckily, C# also happens to have excellent technical characteristics.)

Technologies are supported by “ecosystems” – communities and organizations that provide the tools and assistance that every developer needs. A good ecosystem – Ruby has a great one, for example – can make the individual developer more successful.

Variety is strength

In summary, we have a variety of programming languages because there is a variety of jobs to be done and a variety of people who do those jobs. This diversity makes interesting programs – and interesting companies, and interesting careers – possible.

  • Shog9
  • DaRK FeeLInG

    Yeah, it’s a dumb question.

    • No. It’s an uninformed question. Different thing altogether.

  • As well as the ecosystem there are libraries too. You may only notice this when you want to do something and you find your language of choice doesn’t have the library for it. For most values of something there probably is a library, but if you’re using a language that doesn’t have one then you’ll be busy writing one.

  • One keypoint is that different applications requires different programming languages e.g. C# and Visual C++ for Windows application and X code for Mac Operating system

  • Nazmul Sarker

    this is a awsome explain

  • I don’t think the question’s dumb at all. It’s easy to look at the overwhelming number of languages and tools, and think, “Wow. How did we get here??”

    Like you say, developers have tastes. All languages abstract away the 1’s and 0’s, but perhaps not in a way that’s intuitive for some developers, or efficient for a certain purpose, so they create a language that makes those parts easier.

    OTOH, humans do have a tendency to over-complicate things! Guess it’s a balance.

    Thanks for the sensible explanation.

  • A.Schulz

    See also here, on your own network http://cs.stackexchange.com/q/451/2205

  • John Giese

    Great post! I 100% agree with the reasoning here, in fact, I wrote an article about this same topic (but from a business-person’s standpoint) which hits on most of the same things, but goes into a little more detail and presents some examples. Perhaps it would be interesting to your readers?

    http://innolitics.com/articles/programming-languages/