我用 Python 不多,主要是教学里面用。日常主要用 Mathematica。尝试比较一下。
-使用方便。我曾经尝试过用 Python (Sage)代替 Mathematica,但是很快就放弃了。因为搞科研一般是碰到一个方程,不知道怎么解,打开个软件打进去,然后出结果,拷贝一下结果到下一行输入,删掉几项,再画个图之类。要是用 Python 的话,先要一大堆 import,输出不够直观(如果用普通输出),拷贝到输入也有各种限制(如果用 LaTeX 排版输出)。
-规则替换驱动的符号式编程。虽然 Python 不需要事先声明变量(这对软件工程来讲是个大坑,但是对科研思维下的简单计算是极好的),但毕竟要赋值才能使用。Mathematica 直接用符号替换来驱动计算,没有赋值的符号就是公式中的符号。这样也是完全顺着科研思路走的。
-函数式编程。从 Wolfram 最初设计 Mathematica 的手稿,可以清楚地看出 Mathematica 深受 LISP 等函数式语言的影响。例如
虽然 Python 也一定程度支持函数式编程,但是远远没有 Mathematica 方便和彻底。比如#1(#2)& 这种快速匿名函数,If 语句的返回值,表达式零指标留给表达式头等。因为理论研究主要是面对公式的,函数式编程具有优越性。
-内置函数多,命名规则统一。Python 需要调包不说,函数命名规则、调用规则、调用方式等不统