Curiosamente, fui consultado algumas vezes via email sobre a escolha de uma linguagem de programação para um novo projeto de software e, tendo sempre a mesma resposta, parece-me interessante compartilhá-la com outras pessoas que tenham a mesma dúvida.

Ainda não completei a minha primeira década de experiência em software, mas já cometi vários erros - e evitei outros graças à livros e artigos que me fizeram a aprender com a experiência alheia - o que me faz acreditar que pelo menos tenho uma noção mínima do assunto (espero que não seja uma noção errada ;). Vamos lá.

Como escolher uma linguagem de programação para um projeto de software?

A resposta mais comum: a linguagem que você/sua equipe conhecem mais e/ou melhor.

A resposta mais completa: depende.

Eu sugiro, antes de mais nada, elencar as características que acredita-se serem primordiais no novo projeto: performance, resiliência, etc; e analisar como cada linguagem e/ou framework encaixa nisto. Este é um dos fundamentos da criação de arquiteturas evolucionárias (que suportam evolução constante), um conceito que se baseia no fato de que os produtos de software estão em constante mudança, e devem comportá-las da melhor maneira possível.

Referência bibliográfica: Building Evolutionary Architectures https://www.thoughtworks.com/books/building-evolutionary-architectures

Uma maneira fácil de executar esta análise é pensar em alguma funcionalidade importante do projeto, e implementar apenas ela na linguagem e/ou framework de seu interesse. Com isto, é possível comparar diferentes abordagens e como elas se comportam no âmbito de atingir os objetivos primordiais do projeto e, consequentemente, fazer uma escolha mais adequada ao projeto e ao time que o desenvolverá.