Why are there so many programming languages and which one should I use?

Henry Haefliger
Quick Code
Published in
6 min readOct 11, 2019

These two questions are so frequently come across due to the openness of the programming industry that they solicit their own detailed article. In today’s world, learning to code has never been easier, however, due to this, many beginners are left scratching their heads at where to start. The overwhelming number of existing languages can be traced back to multiple factors which we will discuss in this post, as well as this, we will take a look at which one it is best to begin with.

Based on GitHub statistics, there are nearly 300 notable programming languages available to developers today. Of course, many of these can be discounted due to their lower number of users, however this still leaves us with countless big names such as C, C++, Python, Java, PHP, etc. When we consider this, we can see that we have a considerably large selection to choose from. With this in mind, we can begin asking ourselves why so many have appeared.

A programming language is a set of commands, instructions, and other syntax rules used to create a programs. As the years have changed, so has the technology we use. Not only has the hardware running our software been upgraded but the languages we use to design our programs are being updated, improved, and in some cases, altogether replaced. While the change has been for the better, with our productivity never having been higher, it has brought with it much chaos from the years we have not cleaned up after.

An example of this is the transition from Python2 to Python3, which still has not yet been fully achieved. This incomplete move has left many companies running programs written in python2 as it is what they have always used. Despite initiatives being taken to facilitate this change such as the 2to3 library. The changeover leaves much to be cleared up — countless dated codebases and not to mention GitHub repositories. This article will attempt to bring some clarity to the mess of programming languages we swim in today.

The first viable explanation for the creation of new languages is the evolving needs of the industry. Despite the desire to have a universal language for all projects, for the moment this is not possible and therefore we must compromise between productivity, generality and performance as shown in the diagram bellow. Due to this, as new technologies appear in the industry, new languages are created which are better taylored to this tech.

Possibly the best and most recent example of the above idea is the public emergence of machine learning and data science. This newly adopted technology has called for languages such as R to be developed specifically for this type of product.

Not only do new technologies bring new languages but new companies have the same effect. As the various tech giants continue to vie for more costumer attention, they push their own languages into the market to draw consumers away from other companies. To see this, we need not look further that the largest mobile OS oriented languages Swift and Kotlin. Apple, as the best example, in its quest to restrict their buyers to their products, created their own objective-C based language which can only be used on their products and has disallowed most others from being used on iOS.

New programming techniques harbour the same effect, think of the for-loop, it used to be a while loop with a counter but then someone realised it would be better to just create a new type of loop. The same goes with every paradigm, object-oriented programming is another example, we often see that some languages are referred to as “object-oriented” while some are not. Whenever we think of a new method for solving a problem, it creates an opening for a language adapted to this method.

As well as this, as hardware evolves, new languages are developed as old ones will need to be completely rewritten to meet industry standards. Demonstrating this effect is the switch to C from B which took place in the 1970s, and although we cannot see much of this happening today, it is something that will arrive eventually, especially with the projected developments in quantum computing. Not just this, but we are actually currently very bad at “software engineering” and much of what passes in this field would not pass in other fields of engineering, this means that as we improve, we get a better idea of the tools we need and can build from there.

Furthermore, when we realise that there is a major problem with an already widely used language, it is nearly impossible to repair entirely and cleanly as we would have to change the language fundamentally and would therefore ruin multiple codebases. The only major language which seemingly does this is Swift, for which, with every update, Apple seems to make major changes. This, however has drawn mass critcism as many frustrated developpers are consitently having to rewrite large portions of their code which previously worked flawlessly.

As well as this, as the industry opens up to a wider public, the demand for more readable languages for beginners grows until it opens the door for new languages as is the case for Go and Kotlin, which gained their popularity through their simple nature and easy development. As opposed to this, Scala is widely criticised for its complex features, driving many developers away.

Resulting from the above, we live in a world with countless languages to choose from. Many of them are great, just as many of them not so much. However what is certain is that the industry is always changing and therefore, in 10 years most of them will not look the same, and some of them will have had their places taken, by more modern, productive languages.

With an understanding of where all these languages are coming from, we can proceed in deciding which one to use. The first, and most important step in this is deciding what our final goal is. If it is to be able to develop a good-looking, professional website, you should definitely go for HTML, CSS, and JavaScript. However, if your objective is game development, you should be looking at C# and Java. Many large corporations are now using C++ for their back-end and most operating systems are written in the same. The biggest players in machine learning are Python and R. Mobile development depends on the OS but it is great to take a look at Swift, Kotlin and Java as well as potentially frameworks like ReactNative based on JavaScript and Flutter.

For the next step, it is always good to have a bit of introspect. If you are a complete beginner, looking back at our triangle from earlier, you should go entirely for the productivity and generality line, choices such as Python dominate this area and this is a great place to start understanding concepts for its ease of use and readability. However, if you are experienced and looking to create a large project with much more control over development, C++ and other C languages are great choices.

Hopefully this article has helped clarified some of the reasons for the mess of languages we find today. As well as this, if you are a beginner, I hope this has given you a better idea of which direction you want to move in.

--

--

Henry Haefliger
Quick Code

Developer and writer with a passion for everything that is technology, science and innovation. Always looking to learn something new.