How to Choose a Programming Language
Software Engineers are one of the top in-demand professionals in the current job market. Numerous job opportunities, the ability to work from anywhere in the world, and flexible working hours are only a few benefits of this profession.
But where to start in 2022? How to choose which programming language to learn?
Well, unless someone wants to apply for a university program, one of the ways to start exploring this profession is by doing online courses. Due to the growing number of these, learning how to program has never been easier. Udemy, Coursera, Skillshare, and other online platforms offer different courses on programming languages, both frontend and backend.
Based on recent GitHub statistics, nearly 300 different programming languages are available to developers today. Of course, many of these can be excluded due to their lower number of users, but there are still plenty of them left such as Java, Javascript, Node JS, PHP, C, C ++, Python, etc. Considering this, a beginner has quite a large lake for fishing. With this in mind, you may wonder why so many have appeared, but first let's see what a programming language is.
What is a programming language?
A programming language is a set of commands, instructions, and other syntax rules used to create a program. Due to the rapid technological developments, not only the hardware on which our software runs has improved extremely, but the languages have also been significantly improved and in some cases even completely replaced.
Why do so many languages exist?
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. Due to this, as new technologies appear in the industry, new languages are created which are better tailored to specific technologies, e.g. 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 compete for more customer attention, they push their own languages into the market to draw consumers away from other companies. To see this, we don't need look further than 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 harbor the same effect. Think of the for loop. It used to be a while loop with a counter but then someone realized it would be better to just create a new type of loop. The same happens with every paradigm. Another example is object-oriented programming. 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.
The next reason is the evolution of hardware. As hardware evolves, new languages are developed because old ones will need to be completely rewritten to meet industry standards. An example of this was 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 happen eventually, especially with the projected developments in quantum computing. As we improve, we get a better idea of the tools we need and can build from there.
An important reason for choosing a specific programming language is the speed at which you can enter the market with your new product or service to be developed. With the introduction of agile product development where "Proof Of Concepts" and "MVP's" are often built in the beginning, speed seems to be more important than quality in order to test the idea with customers and convince investors to step in. This often results later in a rebuild with a more mature language in the scale-up phase.
Furthermore, when we realize 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 criticism as many frustrated developers are consistently having to rewrite large portions of their code that previously worked flawlessly.
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 criticized for its complex features, driving many developers away.
Conclusion
Resulting of the above, we live in a world with countless languages to choose from. Many of them are great, just as many of them are not so much. However, what's 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 be replaced 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 Java for their back-end. 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 introspection. If you are a complete beginner, 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, Java-related languages are a great choice.