Quelques pensées supplémentaires.
Le langage de programmation «en soi» n’est qu’un outil. Toutes les langues ont été conçues pour rendre certains types de constructions plus faciles à construire que d’autres. Et la connaissance et la maîtrise d'un langage de programmation sont plus importantes et efficaces que les fonctionnalités de ce langage par rapport aux autres.
Autant que je sache, cette question a deux dimensions. La première dimension est la capacité d'explorer, d'établir rapidement des preuves de concepts ou de modèles, en disposant éventuellement de suffisamment d'outils pour étudier ce qui se passe (tests statistiques, graphiques, outils de mesure, etc.). Ce type d’activité est généralement préféré par les chercheurs et les spécialistes de l’informatique (je me demande toujours ce que cela signifie, mais j’utilise ce terme pour en donner une définition approximative). Ils ont tendance à s'appuyer sur des instruments bien connus et vérifiés, pouvant servir de preuves ou d'arguments.
La deuxième dimension est la capacité à étendre, modifier, améliorer ou même créer des outils, des algorithmes ou des modèles. Pour ce faire, vous avez besoin d’un langage de programmation approprié. À peu près tous sont les mêmes. Si vous travaillez pour une entreprise et que vous dépendez beaucoup de son infrastructure, la culture interne et vos choix diminuent considérablement. En outre, lorsque vous souhaitez implémenter un algorithme pour une utilisation en production, vous devez faire confiance à la mise en œuvre. Et mettre en œuvre dans une autre langue que vous ne maîtrisez pas ne vous aidera pas beaucoup.
J'ai tendance à privilégier, pour le premier type d'activité, l'écosystème R. Vous avez une grande communauté, un vaste ensemble d’outils, la preuve que ces outils fonctionnent comme prévu. En outre, vous pouvez envisager Python, Octave (pour n'en nommer que quelques-uns), qui sont des candidats fiables.
Pour la deuxième tâche, vous devez penser avant à ce que vous voulez vraiment. Si vous voulez des outils robustes prêts pour la production, alors C / C ++, Java et C # sont d'excellents candidats. Je considère Python comme un second citoyen de cette catégorie, avec Scala et ses amis. Je ne veux pas commencer une guerre de flammes, c'est mon avis seulement. Mais après plus de 17 ans en tant que développeur, j'ai tendance à préférer un contrat strict et mes connaissances à la liberté de faire ce que vous voulez (comme cela se produit avec beaucoup de langages dynamiques).
Personnellement, je veux apprendre le plus possible. J'ai décidé que je devais choisir la méthode la plus difficile, ce qui signifie tout mettre en œuvre moi-même. J'utilise R comme modèle et inspiration. Il a de grands trésors dans les bibliothèques et beaucoup d’expérience distillée. Cependant, R en tant que langage de programmation est un cauchemar pour moi. J'ai donc décidé d'utiliser Java et de ne pas utiliser de bibliothèque supplémentaire. C'est uniquement à cause de mon expérience et rien d'autre.
Si vous avez le temps, la meilleure chose à faire est de passer du temps avec toutes ces choses. De cette façon, vous gagnerez la meilleure réponse possible, adaptée pour vous. Dijkstra a déjà déclaré que les outils influaient sur votre façon de penser. Il est donc conseillé de connaître vos outils avant de les laisser modéliser votre façon de penser. Vous pouvez en savoir plus à ce sujet dans son célèbre article intitulé The Humble Programmer.