这些类型的问题中的任何一个难题都是答案高度依赖社区。
要以随意的顺序回答您的一些问题:
MATLAB在学术界和工业界都被广泛使用。它在行业中使用很多的原因之一是因为它是在学术界教授的。我知道,林肯实验室和杜邦的研发部门都使用了MATLAB。
有一些用Python编写的擅长符号计算的软件包,例如sympy和SAGE。根据您的特定兴趣,功能要求和个人喜好,Mathematica(或Maple或其他计算机代数系统)可能优于这些软件包。
MATLAB有一个Symbolic Math Toolbox,可以用于某些符号计算,但是据我的经验,它的符号操作能力比Mathematica和Python弱。理论上,可以在C ++中完成一些符号操作,但这并不方便。MATLAB也不是一种好的通用语言。它能很好地完成线性代数和数值数学,但它没有良好的输入/输出功能。与C ++或Python相比,它没有良好的并行功能(即使有并行MATLAB,MATLAB Star-P和Parallel Computing Toolbox之类的变体)。即使是其图形功能也可能需要一些工作。除非您隶属于拥有许可证的机构,否则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 ++很好,但是由于时间和资源的限制,您可能只会学习实际需要使用的内容,这取决于您所在的社区。