Проблема з будь-яким із цих типів питань полягає в тому, що відповідь сильно залежить від громади.
Щоб відповісти на деякі ваші запитання у безвідмовному порядку:
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 ++, але, враховуючи обмеження часу та ресурсів, ви, мабуть, лише дізнаєтесь, що вам потрібно буде використовувати, і це залежить від громади, в якій ви працюєте.