Una difficoltà con uno di questi tipi di domande è che la risposta dipende fortemente dalla comunità.
Per rispondere ad alcune delle tue domande in ordine casuale:
MATLAB è molto utilizzato sia nel mondo accademico che nell'industria. Uno dei motivi per cui viene usato un po 'nell'industria è perché viene insegnato nel mondo accademico. So per certo che MATLAB è usato al Lincoln Laboratory e nelle divisioni di ricerca e sviluppo di DuPont.
Ci sono pacchetti software scritti in Python che sono bravi nel calcolo simbolico, come sympy e SAGE. A seconda dei tuoi interessi particolari, requisiti di funzionalità e preferenze personali, Mathematica (o Maple o altri sistemi di algebra del computer) potrebbe essere superiore a questi pacchetti.
MATLAB ha una Symbolic Math Toolbox che può essere utilizzata per alcuni calcoli simbolici, ma le sue capacità di manipolazione simbolica, secondo la mia esperienza, sono più deboli di Mathematica e Python. Qualche manipolazione simbolica potrebbe teoricamente essere fatta in C ++, ma è ingombrante. Anche MATLAB non è un buon linguaggio di uso generale. Fa bene l'algebra lineare e la matematica numerica, ma non ha buone capacità di input / output. Non ha buone capacità parallele (anche se ci sono varianti come MATLAB parallelo, MATLAB Star-P e Parallel Computing Toolbox) rispetto a C ++ o Python. Anche le sue capacità grafiche potrebbero usare del lavoro. MATLAB è anche costoso a meno che tu non sia affiliato con un istituto che ha una licenza. Ogni cassetta degli attrezzi è costosa da acquistare e generalmente costa nell'ordine di centinaia o migliaia di dollari.
Mathematica esegue calcoli numerici oltre al calcolo simbolico. Non ho visto persone usarlo per il calcolo numerico tanto quanto ho visto persone usare Python e MATLAB per il lavoro numerico. Anch'esso ha capacità parallele, ma non si ridimensionerà a grandi supercomputer.
Python è un buon linguaggio di uso generale che è considerato facile da imparare e utilizzabile. È usato su grandi supercomputer (vedi, ad esempio, PyClaw, petsc4py, mpi4py e altri) e si adatta bene. Ha anche dei pacchetti numerici molto apprezzati (come NumPy e SciPy); una grande comunità attiva; buone capacità di elaborazione input / output; e buone librerie grafiche, insieme a un ampio repository di librerie (controlla PyPI). È gratuito, rispetto ai pacchetti proprietari di cui sopra. Puoi trovare la maggior parte delle funzionalità di MATLAB o Mathematica nei pacchetti Python disponibili gratuitamente. Lo svantaggio principale di Python è che tende ad essere più lento dei linguaggi compilati come C ++, sebbene questo svantaggio diminuisca con il continuo sviluppo di Cython, Numba e PyPy; può anche essere mitigato sostituendo il codice Python più lento con il codice C (o C ++ o Fortran) e wrapper Python scritti in modo appropriato. In fase di interpretazione, molte persone riportano una maggiore produttività con Python rispetto ai linguaggi compilati. È abbastanza popolare e probabilmente vale la pena imparare se hai tempo.
Il C ++ è un linguaggio complicato e il suo uso nella scienza computazionale è controverso. Il suo ampio set di funzionalità può semplificare la scrittura di software difficile da gestire e che richiede un'eternità per la compilazione. Tuttavia, usate con giudizio, funzionalità come il templating e il sovraccarico dell'operatore possono essere impiegate con grande efficacia, come è stato in progetti come deal.II, Blaze ed Elemental (tra gli altri). Il C ++ ha una ripida curva di apprendimento quando si tratta delle sue funzionalità avanzate e ho sentito resoconti aneddotici di persone che impiegano anni a pensare di aver appreso il linguaggio completo. Tuttavia, è anche una lingua popolare, nonostante i problemi di usabilità e il complesso set di funzionalità. Probabilmente vale la pena imparare, anche solo per rendersi più occupabile; i suoi principali concorrenti nella scienza computazionale sono Fortran e C, che vale anche la pena imparare.
Qualunque cosa tu decida di imparare, si baserà su ciò di cui hai effettivamente bisogno. Certo, è bello imparare sia Python che C ++, ma dati i vincoli di tempo e risorse, probabilmente imparerai solo ciò che devi effettivamente usare e che dipende dalla comunità in cui lavori.