python代替mathematica_Mathematica 比起 Python 如今还有什么优势?

本文探讨了Python在科研计算中代替Mathematica的可能性,指出Mathematica在使用便利性、规则替换驱动的符号式编程、函数式编程、内置函数丰富性、公式输入、文档创建和研究思维连续性方面的优势。尽管Python有免费、程序包管理、多范式编程、原生支持更多数据结构和速度更快等优点,但在科研效率上,Mathematica依然具有不可替代性。
摘要由CSDN通过智能技术生成

我用 Python 不多,主要是教学里面用。日常主要用 Mathematica。尝试比较一下。

-使用方便。我曾经尝试过用 Python (Sage)代替 Mathematica,但是很快就放弃了。因为搞科研一般是碰到一个方程,不知道怎么解,打开个软件打进去,然后出结果,拷贝一下结果到下一行输入,删掉几项,再画个图之类。要是用 Python 的话,先要一大堆 import,输出不够直观(如果用普通输出),拷贝到输入也有各种限制(如果用 LaTeX 排版输出)。

-规则替换驱动的符号式编程。虽然 Python 不需要事先声明变量(这对软件工程来讲是个大坑,但是对科研思维下的简单计算是极好的),但毕竟要赋值才能使用。Mathematica 直接用符号替换来驱动计算,没有赋值的符号就是公式中的符号。这样也是完全顺着科研思路走的。

-函数式编程。从 Wolfram 最初设计 Mathematica 的手稿,可以清楚地看出 Mathematica 深受 LISP 等函数式语言的影响。例如

330803e310825626b250b00318218b78.png

虽然 Python 也一定程度支持函数式编程,但是远远没有 Mathematica 方便和彻底。比如#1(#2)& 这种快速匿名函数,If 语句的返回值,表达式零指标留给表达式头等。因为理论研究主要是面对公式的,函数式编程具有优越性。

-内置函数多,命名规则统一。Python 需要调包不说,函数命名规则、调用规则、调用方式等不统一,气死强迫症。(随着 Mathematica 发展越来越庞大,有规则不统一的情况,例如函数的 Option 有些是保留字,有些是字符串。应该一开始统一设计成字符串。不过总体来讲是好多了。)

-公式输入方便,二维输入直观易懂。有人说在 Mathematica 上打公式像弹钢琴。

-文档方便。虽然 Python 的文档已经很好了,但是还是比不上 Mathematica 在帮助文件里面可以自己改改运行那么方便。

总结一下,作为一个搞研究过程中随手用的工具,用 Mathematica,可以一直用搞研究的思维,纯粹把 Mathematica 作为一个工具。用 Python,就需要在研究思维和程序员思维之间不断切换,这样对研究效率有巨大损害。

-使用更广。这个很大程度是习惯问题,但往往是决定性的。

-免费。其实现在 Mathematica 也有免费的版本,叫 Wolfram Engine,只支持命令行。可以和 Jupyter 配合使用,但是开放程度还是不如 Python。

-程序包更方便。Mathematica 写程序包语法麻烦很多,也不够现代化。不如 Python 直接写个文件,再 import 即可,也具有包管理、打包分发等特性。

-支持多范式编程。不同问题适合用不同范式解决。Python 支持多范式,很多问题就更方便,比如面向对象。

-原生支持更多数据结构。Mathematica 写个链表都要用{a,{b,{c,{d}}}}这样的奇技淫巧。

-比 Mathematica 稍快一点。Mathematica 可以用 Packed Array、编译等技术提速,但如果随手写的话,是比 Python 慢的。比如,我以前写的一个简单循环程序,各个语言执行时间对比如下

24229f027907cbd1e8fc76b0e79ad4ce.png

总结一下,从软件工程的角度,Python 更容易写出规范的程序。如果需要写很长的程序,一直处于程序员思维状态,Python 的优势就慢慢体现出来了。(当然,Python 虽然对科研人员来说不够随意,在软件工程的角度,已经因为过于随意而广受诟病了。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值