Сложность любого из этих типов вопросов заключается в том, что ответ в значительной степени зависит от сообщества.
Чтобы ответить на некоторые ваши вопросы в случайном порядке:
MATLAB широко используется как в научных кругах, так и в промышленности. Одна из причин, по которой он довольно часто используется в промышленности, заключается в том, что его преподают в академических кругах. Я точно знаю, что MATLAB используется в лаборатории Линкольна и в отделах исследований и разработок DuPont.
Существуют программные пакеты, написанные на Python, которые хороши в символьных вычислениях, такие как sympy и SAGE. В зависимости от ваших конкретных интересов, требований к функциям и личных предпочтений Mathematica (или Maple, или другие системы компьютерной алгебры) могут превосходить эти пакеты.
У MATLAB есть набор инструментов Symbolic Math Toolbox, который можно использовать для некоторых символьных вычислений, но его возможности символических манипуляций, по моему опыту, слабее, чем у Mathematica и Python. Некоторые символические манипуляции теоретически могут быть выполнены в C ++, но они громоздки. MATLAB также не является хорошим языком общего назначения. Он хорошо справляется с линейной алгеброй и числовой математикой, но не обладает хорошими возможностями ввода / вывода. Он не имеет хороших параллельных возможностей (хотя есть варианты, такие как параллельный MATLAB, MATLAB Star-P и Parallel Computing Toolbox) по сравнению с C ++ или Python. Даже его графические возможности могут использовать некоторую работу. MATLAB также дорог, если вы не связаны с учреждением, имеющим лицензию. Каждый набор инструментов дорог в приобретении и обычно стоит порядка сотен тысяч долларов.
Mathematica выполняет численные вычисления в дополнение к символическим вычислениям. Я не видел, чтобы люди использовали его для численных расчетов так часто, как я видел людей, использующих Python и MATLAB для численной работы. Он также имеет параллельные возможности, но не подходит для больших суперкомпьютеров.
Python - это хороший язык общего назначения, который считается простым в освоении и использовании. Он используется на больших суперкомпьютерах (см., Например, PyClaw, petsc4py, mpi4py и другие) и хорошо масштабируется. У этого также есть высоко оцененные числовые пакеты (такие как NumPy и SciPy); большое, активное сообщество; хорошие возможности обработки ввода / вывода; и хорошие графические библиотеки, а также большое хранилище библиотек (см. PyPI). Это бесплатно по сравнению с фирменными пакетами, упомянутыми выше. Вы можете найти большинство функций MATLAB или Mathematica в свободно доступных пакетах Python. Основным недостатком Python является то, что он имеет тенденцию работать медленнее, чем скомпилированные языки, такие как C ++, хотя этот недостаток уменьшается с продолжением разработки Cython, Numba и PyPy; это также может быть смягчено путем замены более медленного кода Python кодом C (или C ++, или Fortran) и соответствующим образом написанными оболочками Python. При интерпретации многие люди сообщают о более высокой производительности с Python, чем скомпилированные языки. Это довольно популярно, и, вероятно, стоит учиться, если у вас есть время.
C ++ является сложным языком, и его использование в вычислительной науке является спорным. Большой набор функций облегчает написание программного обеспечения, которое сложно поддерживать, и его компиляция может длиться вечно. Однако при разумном использовании такие функции, как создание шаблонов и перегрузка операторов, могут быть использованы с большим эффектом, как это было в таких проектах, как deal.II, Blaze и Elemental (среди прочих). У C ++ есть крутая кривая обучения, когда дело доходит до его продвинутых функций, и я слышал неподтвержденные сообщения о людях, которым потребовались годы, чтобы почувствовать, что они выучили полный язык. Тем не менее, это также популярный язык, несмотря на проблемы с юзабилити и сложный набор функций. Вероятно, стоит учиться, хотя бы для того, чтобы сделать себя более работоспособным; его основными конкурентами в вычислительной науке являются Fortran и C, которые также стоит изучить.
Все, что вы решите изучать, будет основано на том, что вам действительно нужно. Конечно, приятно изучать и Python, и C ++, но, учитывая ограничения по времени и ресурсам, вы, вероятно, узнаете только то, что вам действительно нужно использовать, и это зависит от сообщества, в котором вы работаете.