Trudność z każdym z tych rodzajów pytań polega na tym, że odpowiedź zależy w dużej mierze od społeczności.
Aby odpowiedzieć na niektóre pytania w przypadkowej kolejności:
MATLAB jest często stosowany zarówno w środowisku akademickim, jak i przemysłowym. Jednym z powodów, dla których jest dość często wykorzystywany w przemyśle, jest to, że uczy się go w środowisku akademickim. Wiem na pewno, że MATLAB jest wykorzystywany w Lincoln Laboratory oraz w działach badań i rozwoju firmy DuPont.
Istnieją pakiety oprogramowania napisane w języku Python, które są dobre w obliczeniach symbolicznych, takie jak sympy i SAGE. W zależności od Twoich zainteresowań, wymagań funkcji i osobistych preferencji, Mathematica (lub Maple lub inne systemy algebry komputerowej) mogą być lepsze od tych pakietów.
MATLAB ma Symboliczny zestaw narzędzi matematycznych, którego można używać do niektórych obliczeń symbolicznych, ale jego możliwości manipulacji symbolicznych są, moim zdaniem, słabsze niż Mathematica i Python. Niektóre manipulacje symboliczne można teoretycznie wykonać w C ++, ale jest to niewygodne. MATLAB nie jest także dobrym językiem ogólnego zastosowania. Dobrze radzi sobie z algebrą liniową i matematyką numeryczną, ale nie ma dobrych możliwości wejścia / wyjścia. Nie ma dobrych możliwości równoległych (chociaż istnieją warianty takie jak równoległy MATLAB, MATLAB Star-P i Parallel Computing Toolbox) w porównaniu do C ++ lub Python. Nawet jego możliwości graficzne mogą przydać się. MATLAB jest również drogi, chyba że jesteś powiązany z instytucją posiadającą licencję. Każdy zestaw narzędzi jest drogi w zakupie i generalnie kosztuje od setek do tysięcy dolarów.
Matematyka oprócz obliczeń symbolicznych wykonuje również obliczenia numeryczne. Nie widziałem, żeby ludzie używali go do obliczeń numerycznych tak bardzo, jak widziałem, jak ludzie używają Pythona i MATLABa do pracy numerycznej. Ma również możliwości równoległe, ale nie będzie skalować się do dużych superkomputerów.
Python jest dobrym językiem ogólnego przeznaczenia, który jest uważany za łatwy do nauczenia i przydatny. Jest używany na dużych superkomputerach (patrz na przykład PyClaw, petsc4py, mpi4py i inne) i dobrze się skaluje. Ma również wysoko cenione pakiety numeryczne (takie jak NumPy i SciPy); duża, aktywna społeczność; dobre możliwości przetwarzania danych wejściowych / wyjściowych; i dobre biblioteki graficzne, wraz z dużym repozytorium bibliotek (sprawdź PyPI). Jest bezpłatny, w porównaniu do wyżej wymienionych pakietów zastrzeżonych. Większość funkcji MATLAB lub Mathematica można znaleźć w darmowo dostępnych pakietach Python. Główną wadą Pythona jest to, że jest on wolniejszy niż skompilowane języki, takie jak C ++, chociaż ta wada maleje wraz z ciągłym rozwojem Cython, Numba i PyPy; można go również złagodzić, zastępując wolniejszy kod Pythona kodem C (lub C ++ lub Fortran) i odpowiednio napisanymi opakowaniami Pythona. Podczas interpretacji wiele osób deklaruje wyższą produktywność dzięki Pythonowi niż w językach kompilowanych. Jest dość popularny i prawdopodobnie warto się go nauczyć, jeśli masz czas.
C ++ jest skomplikowanym językiem, a jego użycie w informatyce jest kontrowersyjne. Jego duży zestaw funkcji może ułatwić pisanie oprogramowania, które jest trudne w utrzymaniu i którego kompilacja trwa wiecznie. Jednak rozsądnie wykorzystane funkcje, takie jak szablony i przeciążanie operatora, mogą być zastosowane z wielkim skutkiem, tak jak miało to miejsce w projektach takich jak deal.II, Blaze i Elemental (między innymi). C ++ ma dużą krzywą uczenia się, jeśli chodzi o jego zaawansowane funkcje, i słyszałem niepotwierdzone doniesienia o ludziach, którzy przez lata mieli wrażenie, że nauczyli się pełnego języka. Mimo to jest to popularny język, pomimo obaw związanych z użytecznością i skomplikowanym zestawem funkcji. Prawdopodobnie warto się uczyć, choćby po to, aby zwiększyć szanse na zatrudnienie; jego głównymi konkurentami w dziedzinie obliczeń są Fortran i C, które również warto poznać.
Wszystko, czego się nauczysz, będzie oparte na tym, czego naprawdę potrzebujesz. Oczywiście, miło jest uczyć się zarówno Pythona, jak i C ++, ale biorąc pod uwagę ograniczenia czasowe i zasoby, prawdopodobnie dowiesz się tylko, czego będziesz potrzebować, a to zależy od społeczności, w której pracujesz.