Una dificultad con cualquiera de estos tipos de preguntas es que la respuesta depende mucho de la comunidad.
Para responder algunas de sus preguntas en orden aleatorio:
MATLAB se usa mucho tanto en la academia como en la industria. Una de las razones por las que se usa bastante en la industria es porque se enseña en la academia. Sé con certeza que MATLAB se utiliza en el Laboratorio Lincoln y en las divisiones de investigación y desarrollo de DuPont.
Hay paquetes de software escritos en Python que son buenos para el cálculo simbólico, como sympy y SAGE. Dependiendo de sus intereses particulares, requisitos de características y preferencias personales, Mathematica (o Maple u otros sistemas de álgebra computacional) pueden ser superiores a estos paquetes.
MATLAB tiene una Caja de herramientas de matemática simbólica que se puede usar para algunos cálculos simbólicos, pero sus capacidades de manipulación simbólica, en mi experiencia, son más débiles que Mathematica y Python. Cierta manipulación simbólica podría hacerse teóricamente en C ++, pero es difícil de manejar. MATLAB tampoco es un buen lenguaje de propósito general. Hace bien el álgebra lineal y las matemáticas numéricas, pero no tiene buenas capacidades de entrada / salida. No tiene buenas capacidades paralelas (aunque existen variantes como MATLAB paralelo, MATLAB Star-P y la Caja de herramientas de computación paralela) en comparación con C ++ o Python. Incluso sus capacidades gráficas podrían usar algo de trabajo. MATLAB también es costoso a menos que esté afiliado a una institución que tenga una licencia. Cada caja de herramientas es costosa de comprar y generalmente cuesta del orden de cientos a miles de dólares.
Mathematica hace cómputo numérico además del cómputo simbólico. No he visto a personas usarlo para el cálculo numérico tanto como he visto a personas usar Python y MATLAB para trabajo numérico. También tiene capacidades paralelas, pero no escalará a grandes supercomputadoras.
Python es un buen lenguaje de propósito general que se considera fácil de aprender y usar. Se usa en supercomputadoras grandes (ver, por ejemplo, PyClaw, petsc4py, mpi4py y otras), y se escala bien. También tiene paquetes numéricos de gran prestigio (como NumPy y SciPy); una comunidad grande y activa; buenas capacidades de procesamiento de entrada / salida; y buenas bibliotecas de gráficos, junto con un gran depósito de bibliotecas (consulte PyPI). Es gratis, en comparación con los paquetes propietarios mencionados anteriormente. Puede encontrar la mayor parte de la funcionalidad de MATLAB o Mathematica en paquetes Python disponibles gratuitamente. La principal desventaja de Python es que tiende a ser más lento que los lenguajes compilados como C ++, aunque esta desventaja está disminuyendo con el desarrollo continuo de Cython, Numba y PyPy; también se puede mitigar reemplazando el código de Python más lento con código C (o C ++ o Fortran) y envoltorios de Python escritos de manera apropiada. Al ser interpretadas, muchas personas reportan una mayor productividad con Python que los lenguajes compilados. Es bastante popular, y probablemente valga la pena aprenderlo si tienes tiempo.
C ++ es un lenguaje complicado, y su uso en ciencia computacional es controvertido. Su amplio conjunto de funciones puede facilitar la escritura de software que es difícil de mantener y que lleva mucho tiempo compilar. Sin embargo, si se usa con prudencia, las características como la creación de plantillas y la sobrecarga del operador pueden emplearse con gran efecto, como lo ha sido en proyectos como Deal.II, Blaze y Elemental (entre otros). C ++ tiene una curva de aprendizaje pronunciada cuando se trata de sus funciones avanzadas, y he escuchado informes anecdóticos de personas que tardan años en sentir que han aprendido el idioma completo. Sin embargo, también es un lenguaje popular, a pesar de las preocupaciones de usabilidad y el complicado conjunto de características. Probablemente valga la pena aprender, aunque solo sea para ser más empleable; Sus principales competidores en ciencias computacionales son Fortran y C, que también vale la pena aprender.
Lo que decida aprender se basará en lo que realmente necesita. Claro, es bueno aprender Python y C ++, pero dadas las limitaciones de tiempo y recursos, probablemente solo aprenderá lo que realmente necesitará usar, y eso depende de la comunidad en la que trabaje.