“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.
15 Comments
Oh, to live back in the ’60s, when life was simpler… http://www.amazon.com/Programming-Languages-Fundamentals-Automatic-Computation/dp/0137299885
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.
No. It’s an uninformed question. Different thing altogether.
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
For example you’ll have a hard time trying to find a Pascal compiler for Android, but there is nothing inherent to the language that forces to be tied to a specific hardware, except for assembly which is by definition tied to hardware. X code is not a language. As long as you can write a compiler or interpreter for that language for a platform, then you can use that language for that platform.
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.
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/
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.
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!
lol…. I like your reply my friend. People don’t realize that the world is becoming crazy. so many prog languages, for what !!!
that’s the behavior of greedy people… and after learning all this so-called programming languages, you’ll realize that there are still a lot to learn .
Life is limited.
Simplicity is Key !!!
Thankyou for this great explanation.
I have been programming for over 50 years. I started with Fortran, a little Cobol, a LOT of assembler, then UCSD Pascal, a few months of ADA, C and C++ for a while, some SQL for database programming and have been using Java and JavaScript since. Fortran was OK for study and math problems but lacked re-entrancy. Cobol was the business language of choice at the time but was very batch oriented. Assembler was good when mini and micro computers were slow but lacked portability. UCSD Pascal was the first 2 stage compiler but lacked speed at the time. ADA was a wild government fantasy that had some interesting features but was very complex. SQL, while having general purpose features, was justified as a separate language because of relational database syntax and semantics.
For the last 20 years I have used Java for apps and JavaScript for browser and other scripting. I think we have reached the point of diminishing returns on new programming languages. Many have syntactical sugar that makes them attractive for certain applications but the lack of the vast libraries, lack of portability in some cases, and the cost of re-education and compatibility problems make them costly boondoggles. I have often heard the advice: choose your language based on your application. I think this is poor advice because applications constantly change and may develop new requirements over time that are beyond the capability of the language or its libraries. It would be better to choose your language based on lifetime cost of its ecosystem.
How many times do we have to rewrite quicksort? The proliferation of languages represents a huge cost in software development and maintenance. Longevity and stability are much more important than the latest language feature. Computer science could be advancing much more quickly if we could focus on algorithms and libraries rather than language compatibility and re-writing code for the latest language fad.
30+ years as a programmer. I worked with a variety of assemblers, C, C++, C#, fortran, pascal, delphi, java, forth, cobol, python, ruby, javascript, php and possibly others that I don’t remember because the traces they left among my neurons are weak.
Truth is that we programmers are an arrogant bunch, and love to create something new instead of improving what is already on the table. That’s why we reinvent the same stuff again and again, adding to a new language a few features that are so complicate to be used by the normal guy.