{{announcement.body}}
{{announcement.title}}

How to Choose a Programming Language

DZone 's Guide to

How to Choose a Programming Language

In this article, a developer discusses five fundamentals parameters to choose a programming language.

· Agile Zone ·
Free Resource

One of the most important and fundamental decisions that a team of developers in an organization have to make is to choose a programming language for the product they are building. We all know it is not an easy choice albeit an essential one.

My team also faced the same dilemma sometime back; however, rather than directly pouncing on the language debate, we decided to take a step back and ponder over the question of what exactly we look for in a language.

We came up with 5 fundamentals parameters to choose a programming language, which I would like to share with you:

1. Programming Paradigm

The first thing that you should look into when picking a programming language is the programming paradigm that your team is comfortable with. There is no debate about the fact that the majority of the programming paradigms are equally well-tested and demonstrated across the industry, but still, developers do have a binary preference when it comes to choosing a programming paradigm, where one looks more natural than others. 

I believe that this decision is very crucial and should be given a significant amount of thought, primarily because of its permanent nature. Once a decision has been made to go ahead with a particular programming paradigm, it is almost impossible to alter it halfway into the project without rewriting a significant amount of your codebase.

Hence, we place the choice of programming paradigm as the topmost parameter when it comes to choosing a programming language.  

2. Community Support

The next most important aspect of choosing a programming language is the community support that language has managed to garner. Having a large community base is a positive sign for a programming language, as it indicates that the language is being adopted by many developers, which in turn ensures constant improvements and enhancements in the language. Large community support can also instill confidence in finding appropriate help in case the team hits a dead-end or a limitation of the language. 

Apart from large community support, paid vendor support is also deemed as an important aspect when making a choice of programming language, since paid support can assure the team of personalized customer care and minimal lead time in resolution of any issues. When a company grows big enough, time becomes more important than money, and paid support could prove to be really helpful in expediting resolutions.

3. Learning Curve

The third point that you should pay attention to when choosing a programming language is the learning curve associated with the language. Choosing an arcane language might look to be very tempting (especially if it solves the use-case relatively easily). However, choosing a new language comes with a huge cost, the cost of training your developers. If a relatively new and arcane language is adopted by a company, they will have to arrange for training of their employees, since openly available resources would neither be enough nor sufficient. 

Finding credible consultants for a new language can prove to be equally difficult and costly, and in many cases, companies have to directly engage with the organization developing the language for guidance and adoption. On the other hand, choosing a language that has been around for some time can surely help to avoid all these expenses, as it is relatively easy to develop in-house expertise or hire experts of the language. 

4. Extendibility

The fourth important point is Extendibility of the language. Extendibility is a confusing term because of the multivariate usage of the term in multiple contexts. Extendibility here means how easy it is to build as well as extend existing frameworks for the language.

Let me first explain what I mean by a framework — a framework is a set of code combined together to form libraries and is used to simplify programming experience in a particular language. The framework is not necessarily written in the language it is built for.

Having said that, theoretically, frameworks can be developed for all languages, however, practically developing frameworks for some languages is far easier than it is for others.

And building on point 2, Community Support, active development of frameworks reinstates the point, that the language has garnered enough community attention, and developers have started developing tools to simplify their working with the language. This is usually an indication of a potentially long-term association with the language.

Therefore, although a little difficult to judge definitively, the extendibility of the language is a very important factor to discuss while choosing a programming language. 

5. Budget

The last point to make the cut in our top 5 parameters is budget. Although this point looks rather ill-placed, what does a budget means when it comes to programming languages? It is an important factor, while making a choice of a programming language for a company.

At present times, and especially for IT start-ups, one of the biggest investments a company has to make is hiring software developers. Software developers are the most expensive resources in the IT ecosystem, and the last thing a company would want is to spend additional money just because they have chosen a certain language, developers for which are expensive than others.

Therefore, companies limit the amount they are willing to spend on hiring developers and take that into consideration when choosing a programming language.

Conclusion

I hope these parameters would prove to be useful whenever you find yourself in a position, where you need to make a choice of a programming language for your product.

Thank you for reading!

Topics:
agile, community support, extendibility, learning curve, programming languages

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}