Matlab真的不可替代么?

by HPCer @ Beijing,2020-6-16

最近这段时间,我的微信朋友圈出现频率最多的就是Matlab被禁相关的新闻,好像Matlab被禁天就要塌下来似的。我对Matlab不可代替这件事真的不敢苟同。大约5~10年前我是Matlab的重度用户,但现在除非是给别人调程序,基本不会再去打开Matlab做任何事情。所以我想,花一点时间,写一点文字,告诉大家Matlab真的不是像传统工业软件那样不可替代,这个事情或许是值得去做的。

为什么我说Matlab被禁不重要

Matlab最初是美国新墨西哥大学Cleve Moler教授编写的用于线性代数和数值分析教学的工具,其目的是让学生学习使用LINPACK和EISPACK库,而不去写繁琐的Fortran程序。他用Fortran编写和封装了相关程序,构建了类似今天脚本语言常见的解释性执行环境,其中最核心的内容是矩阵计算。早期Matlab提供的功能并不多,但基本上也能找到今天常用函数的影子,比如所有人都会用到的PLOT函数(如下图所示):

后来随着Matlab的逐渐商业化,特别是Cleve在斯坦福大学的学生Jack Little加入Matlab产品化开发后(用C语言重写了Matlab,并加入了函数、工具箱和图形化等现代Matlab的基本功能),相继发布了PC-MATLAB(用于PC机)和Pro-MATLAB(用于Unix工作站)产品,MATLAB逐渐在大量使用矩阵计算的工程学科中推广开来。今天的MATLAB虽然增加了很多功能,无论是在语言层面的面向对象编程支持,还是图形化界面的丰富,亦或toolbox的大量增加,都没改变其核心仍然是矩阵计算,所以大家可以看到Matlab里矩阵是最基本的数据类型。

到了今天,不是说矩阵计算不重要了,而恰恰相反,无论是传统CAE仿真,还是如今火热的人工智能,都是建立在矩阵计算基础上,甚至可以说没有矩阵计算,也就没有了今天的数字化工业。但反过来说,在矩阵计算如此重要的时代,Matlab能够发挥的作用有多少?

我想至少有以下几个方面,是今天的Matlab做不到的:

- 大规模并行矩阵计算:大规模并行计算一直是Matlab的短板,您可以说Matlab有parfor、有workers、还支持cuda,但Matlab解释性执行这个基本前提直接阻止了Matlab在高性能计算领域的发挥前景。当然您还可以说我用mex调用C、Fortran程序呀,甚至我还可以用生成器将Matlab语言转成C呀,但这个就不是我们现在讨论的Matlab普适应用价值所在了。

- 工业级软件产品开发:今天的工业级软件产品里,我们基本看不到Matlab的影子,而类似于Matlab解释性脚本语言的开源语言Python反到后来居上,借着人工智能的火热,占据了工业级矩阵计算软件的半壁江山。

- ARM与边缘计算设备:Matlab无法在ARM处理器上运行,这对大量使用ARM的移动端、边缘端设备、工控和基于国产处理器的设备来说是一个巨大的市场空白;此外由于Matlab庞大的体积,也基本难以用于边缘设备的部署。

从这个角度来讲,如果说我们今天要开发一款基于矩阵计算的工业级的高性能程序,Matlab是无能为力的,而这种场景在今天越来越多;此外,随着5G和工业互联网的普及,在边缘端进行的矩阵计算也越来越多,而这种场景更是Matlab无能为力的。

那Matlab今天的主要应用场景在哪?我能够想象到的主要还是集中在教学和科研中,但我想这或许只是一种习惯,而不是真正的技术门槛导致了不可迁移。我们今天就来盘点一下Matlab的两个主要替代品 - Octave和Python。作为一个系列文章的开端,本文不会深入技术细节,未来我会挑选一些典型应用场景,做一些比较详细的分析和解读。

Matlab的直接替代品 - Octave

应该说Octave是Matlab的最直接替代品,

- 首先Octave的界面和Matlab真的很像,因为最初它就是模仿Matlab开始的:

Matlab的直接替代者 - Octave集成应用环境

- 其次,在语法和绘图功能方面,Octave和Matlab极其相似,Octave可以直接直接运行大部分的Matlab源程序,即m文件;Matlab程序除非涉及到比较特殊的工具箱,基本简单的改写即可在Octave中运行。

- 大量的开源代码是同时支持Matlab和Octave的,比如在国外有限元教学中经常用到的ifiss工具箱,就同时维护了Matlab和Octave版本。

- 最近火热的人工智能领域里,Andrew NG 吴恩达在其最受欢迎的深度学习课程中推荐用Octave替代Matlab。

- Octave可以保存数据为Matlab二进制格式,也就是说实在您有部分功能用Octave搞不定了,或者不想自己造轮子了,还可以用偷偷Matlab算一下,当然这一招一般情况下不推荐使用(:

为什么我不提Scilab,按理说Scilab比Octave出道时间早,又是INRIA(法国国家信息与自动化研究院)这么强大的背书,应该是牛x的,但我用过几次Scilab后直接选择了放弃。我不记得以前是在哪篇文章里看过,说信仰自由的法国人喜欢搞开源软件,但搞了一堆却没几个好好维护下去的,Scilab恐怕就毁在这儿。(关于开源软件的开发模式,大家没事可看看Eric Raymond著名的《大教堂与市集》)当然这也许只是我的个人偏好问题,Scilab的粉丝请不要对我开火(:

Matlab的间接替代品 - Python Spyder

首先要解释一下,我为啥说Spyder而不提现在用的更多的Jupyter Notebook?我想用过Mathematica的同学都知道,Jupyter更像是Mathematica,很多Matlab的用户直接上手Jupyter并不习惯,而Spyder真的很像Matlab:

Matlab的间接替代者 - Python Spyder集成开发环境

关于Python的话题,我想用一天也都说不完,反正Python很火就是了,应用领域也比Matlab要大得多。Python可以从理论研究出发,一路做到工业产品,也就是说您在迁移Matlab程序的过程中,万一哪天厌倦了想转行,还可以靠Python去产业界找个工作^-^ 可以说如果你一上手就是用的Python,可能根本不会去想Matlab的事情;但对于Matlab重度用户来讲,转移到Python还是有一定的难度,主要的问题还是使用习惯造成。所以这里我要介绍一个大神器,叫做oct2py,用它可以直接在Python环境里调用Octave内核来运行Matlab/Octave代码,用这种方式可能会比直接用Python重写Matlab代码要自然得多。所以,我想或许Python+Octave能够完美解决Matlab的替代问题,而Python本身又比Matlab强大很多,一旦渡过了适应期大家会发现Matlab真的是可有可无了~

结语

十年前我还在读研究生的时候,曾经给国家气象局的学弟学妹们上过一门Matlab的课 ,那个时候我们是想用Matlab代替一门当时在空间科学领域广为应用的商业语言,叫做IDL(Interactive Data Language,交互式数据语言)。我不知道今天在空间科学里IDL的使用率还有多少,至少这门语言没有发展推广到其他更加广阔的应用领域,甚至在空间科学本身,我也看到越来越多使用Matlab的用户。我想说既然Matlab可以替代IDL,那么在贸易战美国对我们封锁的背景下,Matlab也绝对不像网上很多人说的那样不可替代!如果您不知道怎样替代,请持续关注我的简书吧^-^

其实我更想说的是,很多时候一个软件在国内用的多,用的广,并不是说他真的就是技术上不可替代,甚至不是因为他真的做得就是比其他软件好,至少在数学软件这块,Matlab是不如Mathematica优雅的(Matlab也有类似于Mathematica的符号运算功能,但他借用的是Maple的语法,并且是以MuPAD单独组件的形式出现,我敢说大部分Matlab用户甚至从来都没有打开过这个界面),但国内用Matlab的人却要比Mathematica多太多了。

我是一个国产HPC/CAE软件研发从业者,今天在仿真计算软件领域看到的情况与Matlab生态是类似的,很多人都说老外的软件做的就是比国产的好,但我想很多时候只是使用习惯和你身边的人决定了你接受哪种软件,对于一个完全没有任何经验和没任何人指导的工业软件初学者来讲,是我们FELAC好用还是ANSYS好用,真不一定好说(:

待续……

参考文献

[1] MATLAB发展简史. https://ww2.mathworks.cn/company/newsletters/articles/a-brief-history-of-matlab.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,165评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,720评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,849评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,245评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,596评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,747评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,977评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,708评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,448评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,657评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,141评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,493评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,153评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,890评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,799评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,685评论 2 272