Une difficulté avec l'un de ces types de questions est que la réponse dépend fortement de la communauté.
Pour répondre à certaines de vos questions au hasard:
MATLAB est beaucoup utilisé à la fois dans le monde universitaire et dans l'industrie. L'une des raisons pour lesquelles il est assez utilisé dans l'industrie est qu'il est enseigné dans les universités. Je sais pertinemment que MATLAB est utilisé au Lincoln Laboratory et dans les divisions de recherche et développement de DuPont.
Il existe des progiciels écrits en Python qui sont bons en calcul symbolique, tels que sympy et SAGE. Selon vos intérêts particuliers, les exigences de fonctionnalités et vos préférences personnelles, Mathematica (ou Maple, ou d'autres systèmes d'algèbre informatique) peut être supérieur à ces packages.
MATLAB a une boîte à outils mathématiques symbolique qui peut être utilisée pour certains calculs symboliques, mais ses capacités de manipulation symbolique, selon mon expérience, sont plus faibles que Mathematica et Python. Une manipulation symbolique pourrait théoriquement être effectuée en C ++, mais elle est peu maniable. MATLAB n'est pas non plus un bon langage à usage général. Il fait bien l'algèbre linéaire et les mathématiques numériques, mais il n'a pas de bonnes capacités d'entrée / sortie. Il n'a pas de bonnes capacités parallèles (même s'il existe des variantes comme MATLAB parallèle, MATLAB Star-P et Parallel Computing Toolbox) par rapport à C ++ ou Python. Même ses capacités graphiques pourraient utiliser un certain travail. MATLAB est également coûteux, sauf si vous êtes affilié à une institution disposant d'une licence. Chaque boîte à outils est coûteuse à l'achat et coûte généralement de l'ordre de centaines à milliers de dollars.
Mathematica fait du calcul numérique en plus du calcul symbolique. Je n'ai pas vu des gens l'utiliser autant pour le calcul numérique que j'ai vu des gens utiliser Python et MATLAB pour le travail numérique. Il a également des capacités parallèles, mais ne s'adapte pas aux grands superordinateurs.
Python est un bon langage à usage général qui est considéré comme facile à apprendre et utilisable. Il est utilisé sur les grands supercalculateurs (voir, par exemple, PyClaw, petsc4py, mpi4py et autres), et évolue bien. Il a également des packages numériques très appréciés (tels que NumPy et SciPy); une grande communauté active; bonnes capacités de traitement d'entrée / sortie; et de bonnes bibliothèques graphiques, ainsi qu'un grand référentiel de bibliothèques (consultez PyPI). Il est gratuit par rapport aux packages propriétaires mentionnés ci-dessus. Vous pouvez trouver la plupart des fonctionnalités de MATLAB ou Mathematica dans des packages Python disponibles gratuitement. Le principal inconvénient de Python est qu'il a tendance à être plus lent que les langages compilés comme C ++, bien que cet inconvénient diminue avec le développement continu de Cython, Numba et PyPy; il peut également être atténué en remplaçant le code Python plus lent par du code C (ou C ++ ou Fortran) et des wrappers Python correctement écrits. En cours d'interprétation, de nombreuses personnes rapportent une productivité plus élevée avec Python que les langages compilés. Il est assez populaire et mérite probablement d'être appris si vous avez le temps.
Le C ++ est un langage compliqué et son utilisation en science informatique est controversée. Son large éventail de fonctionnalités peut faciliter l'écriture de logiciels difficiles à entretenir et dont la compilation prend une éternité. Cependant, utilisées judicieusement, des fonctionnalités telles que les modèles et la surcharge des opérateurs peuvent être utilisées à bon escient, comme cela a été le cas dans des projets comme deal.II, Blaze et Elemental (entre autres). Le C ++ a une courbe d'apprentissage abrupte en ce qui concerne ses fonctionnalités avancées, et j'ai entendu des rapports anecdotiques de personnes prenant des années pour avoir l'impression d'avoir appris la langue complète. Néanmoins, c'est aussi un langage populaire, malgré les problèmes d'utilisation et l'ensemble de fonctionnalités compliqué. Il vaut probablement la peine d'apprendre, ne serait-ce que pour vous rendre plus employable; ses principaux concurrents en informatique sont Fortran et C, qui méritent également d'être étudiés.
Tout ce que vous décidez d'apprendre sera basé sur ce dont vous avez réellement besoin. Bien sûr, c'est agréable d'apprendre à la fois Python et C ++, mais compte tenu des contraintes de temps et de ressources, vous n'allez probablement apprendre que ce dont vous aurez réellement besoin, et cela dépend de la communauté dans laquelle vous travaillez.