Eine Schwierigkeit bei jeder dieser Arten von Fragen besteht darin, dass die Antwort stark von der Community abhängt.
So beantworten Sie einige Ihrer Fragen in zufälliger Reihenfolge:
MATLAB wird sowohl in der Wissenschaft als auch in der Industrie häufig eingesetzt. Einer der Gründe, warum es in der Industrie häufig verwendet wird, ist, dass es in der Wissenschaft unterrichtet wird. Ich weiß, dass MATLAB im Lincoln Laboratory und in den Forschungs- und Entwicklungsabteilungen von DuPont eingesetzt wird.
In Python sind Softwarepakete geschrieben, die sich gut für symbolische Berechnungen eignen, z. B. Sympy und SAGE. Abhängig von Ihren speziellen Interessen, Funktionsanforderungen und persönlichen Vorlieben kann Mathematica (oder Maple oder andere Computeralgebrasysteme) diesen Paketen überlegen sein.
MATLAB verfügt über eine Symbolic Math Toolbox, die für einige symbolische Berechnungen verwendet werden kann, aber die symbolischen Manipulationsfunktionen sind meiner Erfahrung nach schwächer als bei Mathematica und Python. Einige symbolische Manipulationen könnten theoretisch in C ++ durchgeführt werden, sind jedoch unhandlich. MATLAB ist auch keine gute Allzwecksprache. Es macht lineare Algebra und numerische Mathematik gut, hat aber keine guten Eingabe- / Ausgabefähigkeiten. Es verfügt im Vergleich zu C ++ oder Python nicht über gute parallele Funktionen (obwohl es Varianten wie paralleles MATLAB, MATLAB Star-P und die Parallel Computing Toolbox gibt). Sogar seine Grafikfähigkeiten könnten etwas Arbeit gebrauchen. MATLAB ist auch teuer, es sei denn, Sie sind mit einer Institution verbunden, die über eine Lizenz verfügt. Jeder Werkzeugkasten ist teuer in der Anschaffung und kostet in der Regel Hunderte bis Tausende von Dollar.
Mathematica führt neben der symbolischen Berechnung auch numerische Berechnungen durch. Ich habe nicht gesehen, dass Leute es für numerische Berechnungen verwenden, so wie ich gesehen habe, wie Leute Python und MATLAB für numerische Arbeiten verwenden. Es verfügt ebenfalls über parallele Funktionen, lässt sich jedoch nicht auf große Supercomputer skalieren.
Python ist eine gute Allzwecksprache, die als leicht zu erlernen und verwendbar angesehen wird. Es wird auf großen Supercomputern verwendet (siehe z. B. PyClaw ,haustc4py, mpi4py und andere) und lässt sich gut skalieren. Es hat auch hoch angesehene numerische Pakete (wie NumPy und SciPy); eine große, aktive Gemeinschaft; gute Ein- / Ausgabeverarbeitungsfähigkeiten; und gute Grafikbibliotheken sowie ein großes Repository an Bibliotheken (siehe PyPI). Es ist kostenlos im Vergleich zu den oben genannten proprietären Paketen. Sie finden die meisten Funktionen von MATLAB oder Mathematica in frei verfügbaren Python-Paketen. Der Hauptnachteil von Python besteht darin, dass es tendenziell langsamer ist als kompilierte Sprachen wie C ++, obwohl dieser Nachteil mit der Weiterentwicklung von Cython, Numba und PyPy abnimmt. Es kann auch gemildert werden, indem langsamerer Python-Code durch C- (oder C ++ oder Fortran-) Code und entsprechend geschriebene Python-Wrapper ersetzt wird. Bei der Interpretation berichten viele Menschen von einer höheren Produktivität mit Python als mit kompilierten Sprachen. Es ist sehr beliebt und wahrscheinlich lohnenswert zu lernen, wenn Sie Zeit haben.
C ++ ist eine komplizierte Sprache und ihre Verwendung in der Computerwissenschaft ist umstritten. Dank seines umfangreichen Funktionsumfangs ist es einfach, Software zu schreiben, deren Wartung schwierig ist und deren Kompilierung ewig dauert. Mit Bedacht eingesetzt, können Funktionen wie Vorlagen und Überladen von Bedienern jedoch sehr effektiv eingesetzt werden, wie dies unter anderem bei Projekten wie deal.II, Blaze und Elemental der Fall war. C ++ hat eine steile Lernkurve, wenn es um seine erweiterten Funktionen geht, und ich habe anekdotische Berichte von Menschen gehört, die Jahre gebraucht haben, um das Gefühl zu haben, die volle Sprache gelernt zu haben. Trotz der Bedenken hinsichtlich der Benutzerfreundlichkeit und des komplizierten Funktionsumfangs ist es auch eine beliebte Sprache. Es lohnt sich wahrscheinlich zu lernen, wenn auch nur, um sich beschäftigungsfähiger zu machen; Die Hauptkonkurrenten in der Computerwissenschaft sind Fortran und C, die es ebenfalls wert sind, gelernt zu werden.
Was auch immer Sie lernen möchten, hängt davon ab, was Sie tatsächlich benötigen. Sicher, es ist schön, sowohl Python als auch C ++ zu lernen, aber angesichts der Zeit- und Ressourcenbeschränkungen werden Sie wahrscheinlich nur lernen, was Sie tatsächlich benötigen, und das hängt von der Community ab, in der Sie arbeiten.