Each new project, whether a standalone program, or a component for an existing program, faces a choice of programming language. Just using what is most popular, or what has been done before, is a poor way to select. You should always evaluate your options and be constantly looking for better ways to get the job done.
While evaluating a language you should also be considering the overall architecture of your project. Not all part of a project need to be, or even should be, written in the same language. The language process will actually be a vital part of your initial design process. How you split your modules and connect the pieces is highly influenced by the answers to the questions posed here.
I’m going to avoid giving specific language examples in this article; I don’t wish to bias your selection with my experience. While some projects will clearly have winners and losers, you should be able to arrive at those conclusions on your own. Languages also change over time, so what was best two years ago may no longer be so, and what was previously excluded could now be a good candidate.