“Why Are There So Many Programming Languages?”

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.

You can discover the career possibilities for developing in C#, Ruby or whichever language suits your taste on Stack Overflow Jobs.


Matt Sherman
Engineering Manager
Matt speaks on engineering and engineering management. He specializes in recruiting, getting developers talking to salespeople, and the Go programming language. He is also the founder of Alikewise, a dating site based on books.

Related Articles


  1. DaRK FeeLInG says:

    Yeah, it’s a dumb question.

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

  2. 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.

  3. 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

  4. 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.

  5. 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?


  6. This article is very much helpful and I hope this will be useful information for the needed one. Keep on updating these kinds of informative things.


    It is a question I have asked others for longer than I can remember. I agree with Matt. At a gathering at Stanford in 1986, I asked Grace Hopper and she shrugged and then whispered over her drink “it’s people wh?..I see a bug in here”. I’m 75 yo and I ask young people who want to be programmers what language they would choose if given this imperative IF system = failed THEN people := dead.

  8. I dont think so, nowadays we are overhelming with new languages, not because only tastes of a programmer but companys trying to create a new pattern, to gain the copyright. You really think we need Kotlin to program for android ? No,we dont! But google wanted to slowlly get rid of Java because Java is a trademark of oracle, and even if today kotlin uses java JVM, tomorrow google can stop using java JVM and internally uses its own JVM. Today programmers are becomming crazy because there are a lot of patterns to learn a lot of languages, and we have a limited time in this life!!! We need to make things simpler my friends, focus on the problem to solve, sometimes I thing the world is becoming crazy. Think about JEE using Tomcat or GlashFish or another White Elephant, you know you can create this type of solution using PHP easely, so why complicate everything ? Wtf people!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.