Choosing a language takes knowledge.
You may already know a language or you may be looking to learn your first one — in any case, choosing the next language to invest your time in, is not an easy task.
Basically, to choose a language you should have the 30000-foot view which takes some years to get.
In this article, I’ll give you my 2 cents to help you make a good choice.
The Herd is not always RightThe most popular language on Earth might be dying in a few months from now.
On the same lines, the most obscure Language in the world might be perfectly suitable for you to jumpstart your career as it matches your domain skills and your life goals.
– “But — how can those many programmers be so wrong?!”My point here is programmers are also humans and they can also be wrong.
And Believe me, it has happened to me Twice in my career.
Trust your own judgment and take the decision.
That said, let us see some of the factors which need to be considered while selecting a programming language, whether it is for personal use or for a large project within an organization.
The Elasticity of a Language is Important.
The “elasticity” of a language is the ease with which new features can be added to the existing program.
Elasticity can involve adding a new set of functions or using an existing library to add a new feature.
Consider the following questions related to elasticity.
Can I start using the capability of the language without including a new library?If not, is the capability available in the language library?If it’s not a native capability and not available as a library, what is the effort to build the features from scratch?Before making a decision, you should know how the program has been designed and what features have been set aside as future improvements.
Though a comparison of these languages is not technically correct, consider Perl and Python.
Perl has regular expression support built in as a ready-to-use feature.
In the case of Python, you have to import from the standard library.
Always remember as a rule-of-thumb an “in demand” language will have multiple versions of improvements being brought in by the software owners every few months.
There will always be a “patch” or so to be imported to add something new, update existing features, etc.
If that is not happening the language is dying.
Don’t invest your time and effort into it.
Choose a Language that Solves your ProblemAside from the obvious performance requirements, the language must have good technical qualities for your needs.
You need to choose a language which can solve your problem and make your life better.
For example, imagine that you can determine that language X would be better if you achieve 5 million users or more, while language Y would make easier and cheaper to reach 5 million users.
How can you know if you will ever reach 5 million users?.Maybe language X would be too costly to use at the start and so your company will fail before reaching that many users.
So you do need to choose a language that fit well your use case, a language that checks all the boxes.
Although you do not necessarily need to pick the one that best fits your use case.
That is because it is not always possible to rank different needs or, even if it were, you might not know which one matters the most to you.
Consider technical requirements as a filter, your language must pass them, but it does not need to be the best possible language for that.
Choose the Best Performing LanguageThe best performing language is actually a misnomer.
You can never have a language which is best performing in all circumstances.
For example, consider a web application written in both Java code and Python.
The performance data would lead you to conclude that, given similar environments, the application written in the Java language should run faster than the one written in Python.
But what about the environment itself?.If the environment is an x86 Ubuntu Intel Q6600 one core, it’s a fair game because the computational power is limited.
What if the web application is in the cloud, running on Google App Engine?.You now have access to virtually unlimited processing power, and both the programs are going to return results at almost the same time.
The choice factor now revolves around lines of code and maintainability.
On the other hand, we have Domain specific scientific languages/frameworks like Matlab which are specialized in various tasks and they use special linear algebra and other math libraries tuned for high performance, they support vectorization, etc.
Matlab is good for prototyping or bare research tasks but the fact that it is commercial and a huge software bundle limits its cross-platformness and high availability.
That said, the performance of a language should matter when the target environment doesn’t offer much scope for scaling.
Hand-held devices are an example of such an environment.
And Lastly, Good Community Support is ImportantJust as good software needs a community following to help it grow, a programming language should also have a strong community behind it.
A language with an active forum is likely to be more popular than even a great language that doesn’t have help at hand.
A good community fit has many advantages: developers think the way you want them to think and they also usually have non-programming skills or knowledge that you need.
Which means that you have to spend less time training them and you are less at risk of hiring the wrong developer.
Community support generates wikis, forums, tutorials, and, most importantly, additional libraries that help the language to grow.
Gone are the days when people operate in silos.
People don’t want to skim through all the documentation to get one minor problem solved.
If a language has a good following.
SAP is a good example of the importance of community.
The SAP Developer Network (SDN) is a community-driven effort.
SDN’s main purpose is to help programmers locate modules and programs not included in the SAP standard distribution.
Its structure is decentralized; authors maintain and improve their own modules.
Forking, and creating competing modules for the same task or purpose, are common.
After all, the very premise of building great software is built on collaboration.
The more the collaboration happens, the more robust the software becomes.
Simple as that.
As Caroline Ghosn has rightly said.
Collaboration is like carbonation for fresh ideas.
Working together bubbles up ideas you would not have come up with solo, which gets you further faster.
About the author-:Ravi Rajan is a global IT program manager based out of Mumbai, India.
He is also an avid blogger, Haiku poetry writer, archaeology enthusiast, and history maniac.
Connect with Ravi on LinkedIn, Medium andTwitter.
.. More details