任何这些类型的问题的困难在于答案高度依赖于社区。
要以随意的顺序回答您的一些问题:
MATLAB 在学术界和工业界都被大量使用。它在工业中大量使用的原因之一是因为它是在学术界教授的。我知道林肯实验室和杜邦的研发部门都在使用 MATLAB。
有用 Python 编写的擅长符号计算的软件包,如 sympy 和 SAGE。根据您的特定兴趣、功能要求和个人偏好,Mathematica(或 Maple,或其他计算机代数系统)可能优于这些软件包。
MATLAB 有一个 Symbolic Math Toolbox,可用于一些符号计算,但根据我的经验,它的符号操作能力比 Mathematica 和 Python 弱。一些符号操作理论上可以在 C++ 中完成,但它很笨拙。MATLAB 也不是一个好的通用语言。它在线性代数和数值数学方面做得很好,但它没有很好的输入/输出能力。与 C++ 或 Python 相比,它没有很好的并行能力(即使有并行 MATLAB、MATLAB Star-P 和并行计算工具箱等变体)。甚至它的图形功能也可能需要一些工作。除非您隶属于拥有许可证的机构,否则 MATLAB 也很昂贵。每个工具箱的购买成本都很高,而且通常要花费数百到数千美元。
除了符号计算之外,Mathematica 还进行数值计算。我还没有看到人们将它用于数值计算,就像我看到人们使用 Python 和 MATLAB 进行数值工作一样。它也具有并行功能,但无法扩展到大型超级计算机。
Python 是一种很好的通用语言,被认为易于学习和使用。它用于大型超级计算机(例如,参见 PyClaw、petsc4py、mpi4py 等),并且可以很好地扩展。它还有备受推崇的数值包(例如 NumPy 和 SciPy);一个庞大而活跃的社区;良好的输入/输出处理能力;和良好的图形库,以及大量的库(查看 PyPI)。与上面提到的专有软件包相比,它是免费的。您可以在免费提供的 Python 包中找到 MATLAB 或 Mathematica 的大部分功能。Python 的主要缺点是它往往比 C++ 等编译语言要慢,尽管随着 Cython、Numba 和 PyPy 的持续发展,这个缺点正在减少;也可以通过用 C(或 C++,或 Fortran)代码替换较慢的 Python 代码和适当编写的 Python 包装器来缓解它。在被解释的情况下,许多人报告说 Python 比编译语言的生产力更高。它很受欢迎,如果你有时间可能值得学习。
C++ 是一门复杂的语言,它在计算科学中的使用是有争议的。其庞大的功能集可以使编写难以维护且需要永远编译的软件变得容易。但是,如果使用得当,模板和运算符重载等功能可以发挥很大的作用,就像在 deal.II、Blaze 和 Elemental 等项目中一样。C++ 在高级特性方面有一个陡峭的学习曲线,而且我听说过一些轶事报告说人们花了数年时间才觉得他们已经学会了完整的语言。尽管如此,它也是一种流行的语言,尽管存在可用性问题和复杂的功能集。如果只是为了让自己更受雇,这可能值得学习;它在计算科学领域的主要竞争对手是 Fortran 和 C,同样值得学习。
无论您决定学习什么,都将基于您的实际需要。当然,同时学习 Python 和 C++ 很好,但鉴于时间和资源限制,您可能只会学习实际需要使用的内容,这取决于您所在的社区。