People usually argue that one language is better than the other. Most of this is opinion based, but lets see if we could add method to the madness.
There are three contexts in which this problem could be analyzed.
- The Engineering aspects of the programming language.
- The user’s context
- The ecosystem
The engineering aspects
Certain languages offer better constructs from an engineering perspective. Better could be in terms of number of unknown impacts of using the construct. The lesser the better. As an example, shared memory along with concurrency is a very poor construct just from an engineering perspective.
The user’s context
Just better engineering capabilities are not enough to decide the language to use. We must consider the “average” programmer in your team and what are their expertise. They could be legends in constructing programs using a set of constructs, in which case, it would be unwise to ask them to program using something new. If you have a problem with this, you have no choice but to change the team. If the expertise is unclear, as is in most cases, the better the engineering capabilities, the better the language.
The third main dimension is the community around the language. This is the community that is going to write libraries and tools that will make application development easier in your chosen language. There are two kinds of communities (mature and slow) vs (new and fast). Older communities are generally slow to adopt or innovate new techniques. Newer communities are typically faster at doing that.
The important thing is to evaluate your context against these dimensions. There is no one global language which suites all contexts.