如题,小博士一名,在做一些推荐算法、主题模型方面的东西。之前一直用 Matlab 比较多,也做过一些和 C、Java 的混编,感觉还比较顺手。但最近听好多人推荐 Python,请问 Python 和 Matlab 对比,有什么主要的优劣势吗?不论是研究生期间还是毕业后的工程应用中。是否有必要去主动学学 Python 呢?
Python战胜MATLAB所有优势都来源于:免费。
正是因为免费又开源,才有这么多源源不断的人才进入这个community,让整个python community极其活跃,什么问题和教材都能找到,远超matlab圈子。
在我国用matlab的个人,甚至很多科研人员在自己笔记本电脑上装的matlab都是下载的。这个用盗版现象在欧美基本是看不到的,甚至欧美的大学生都会主动买正版。在大学和公司用matlab做研究是绝对不敢用盗版matlab的,这个被举报了公司都能告垮。但反过来因为昂贵也限制了matlab圈子的人才进入,活跃程度比如python要差很多。
如果matlab定价4.9元,每个toolbox定价0.09元,那可能今天matlab的地位就是另一中景象了。
而且维护matlab的群体主要就是mathworks公司,他们不倒闭,matlab就没问题,但只要是公司,谁说得清楚呢。从2016年开始MATLAB的marketshare就一直稳定下降,相信mathworks也很慌。而现在python是渗透到了所有科研领域,说夸张点,python是整个地球上的科研系统都在维护。
从下面的图就能看出来,在Stack Overflow论坛上针对不同语言的提问比例,Python现在已经是最多的了,估计2020年能达到16%以上,这直接证明了python在全球科研与教学中的活力。Matlab比例估计只有0.2%不到。
但python要完全取代matlab也不现实,很多科研单位的整个研究架构就是在matlab上做出来的,比如科研单位内部使用的toolbox,几万甚至几十万行程序要全部改成python,而且科研人员战斗力要集体转换到python上,那得花多少人力和时间。
matlab作为一种语言,在数值和建模上确实比python方便太多,因为matlab更像是一种scripting language(脚本语言,要用matlab做初中级的建模,我觉得难度跟HTML和LaTeX这些学习难度差不多,都是10分钟入门,半天就能上手),而不完全是programming language。
我们初学python的时候肯定会学习class和OOP这些概念,但是matlab要走高阶水平才会用一点OOP。matlab里绝不会看到一些让初学者莫名其妙的范式表达,比如python的程序入口表达 if __name__ == '__main__'这些。
matlab就是怎么好用怎么来,用户就是客户,好不好用客户说了算,怎么让客户最轻松地解决问题是mathworks的终极目标,也做得很棒。但这其实也让会matlab转其他编程语言变相地提高了门槛,因为学会matlab门槛太低,很多编程的严肃内容都多教材都不涉及,就比如OOP。