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的直接替代品 - Octave
应该说Octave是Matlab的最直接替代品。
Matlab的间接替代品 - Python Spyder
首先要解释一下,我为啥说Spyder而不提现在用的更多的Jupyter Notebook
?我想用过Mathematica
的同学都知道,Jupyter更像是Mathematica,很多Matlab的用户直接上手Jupyter并不习惯,而Spyder真的很像Matlab:
关于Python的话题,我想用一天也都说不完,反正Python很火就是了,应用领域也比Matlab要大得多。Python可以从理论研究出发,一路做到工业产品,也就是说您在迁移Matlab程序的过程中,万一哪天厌倦了想转行,还可以靠Python去产业界找个工作^-^ 可以说如果你一上手就是用的Python,可能根本不会去想Matlab的事情;但对于Matlab重度用户来讲,转移到Python还是有一定的难度,主要的问题还是使用习惯造成。所以这里我要介绍一个大神器,叫做oct2py,用它可以直接在Python环境里调用Octave内核来运行Matlab/Octave代码,用这种方式可能会比直接用Python重写Matlab代码要自然得多。所以,我想或许Python+Octave能够完美解决Matlab的替代问题,而Python本身又比Matlab强大很多,一旦渡过了适应期大家会发现lab真的是可有可无了~
结语
十年前我还在读研究生的时候,曾经给国家气象局的学弟学妹们上过一门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
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...