最近,因为美国政府实体名单的影响,国内学校哈工大、哈工程接到了MATLAB软件停止服务的邮件通知,该软件的相关授权已被终止,无法继续使用。此事在国内媒体迅速发酵并成为社会关注热点,引发学术界和技术界的广泛讨论和引起有关部门的高度重视。
那MATLAB是什么#
MATLAB是美国MathWorks公司出品的商业数字软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
Matlab以矩阵操作为核心,是一个集成数学、力学、统计学、工程学、电子电路、金融学等各个行业专家知识的工具软件。边学边用,边用边学。看看help,找一下对应的工具包,模仿一下调用包的示例代码,就能完成日常工作,这是一个常态。
二十多年时间,Matlab陪众多工科和理科科研人员完成了各种学科作业、毕业论文,以及日常的科研工作,现在大多数人几乎每天都在用。
我们现在就来研讨一下,Matlab被禁,对中国科研和工业界意味着什么#
Matlab这样的基础工具被禁,实质是,提高了许多初级科研工作和设计工作的人力成本,或者说提高了科研工作的难度,压缩了设计工作的利润空间。
我们从Matlab的基础功能和Matlab的工具箱两个方面来说明这个问题。
(1)Matlab的基础功能可以比较容易的寻找替代工具
Matlab的基础功能是科研部门常用的东西,比如说各种矩阵计算,微分方程求解,画图之类。这些东西可以比较容易的用其他科学计算软件,或者R,Python等编程语言引用相应工具包替代。
matlab这些方面有个很大的好处就是文档非常全,而且有全球许多人写各种翻译和支持文档,而且数据文件支持做的很全,可以导入其他软件产生的数据。这些功能对于大学生来说是很有价值的,但说到底不怕麻烦都可以替换,替换门槛也不高。
比如matlab的矩阵计算本身是调用lapack/mkl的,这个还好,但它的call机制非常有问题,经常没事就把数组复制一下,这个工作往往比计算部分还慢很多。你自己写个FORTRAN接口调用MKL,或者用C++的引用方式,都会效率高得多。
下面我们看一下两款可以替代Matlab基础功能的开源软件:
1)SCILAB
SCILAB 是一款与 MATLAB 类似的开源软件,可以实现 MATLAB 上所有基本的功能,如科学计算、矩阵处理及图形显示等。由于SCILAB的语法与MATLAB非常接近,熟悉MATLAB编程的人很快就会掌握SCILAB的使用。有意思的是,SCILAB提供的语言转换函数可以自动将用MATLAB语言编写的程序翻译为 SCILAB语言。目前,SCILAB可在Linux、Windows和 Mac OS等全PC平台运行。
作为开放源码的软件,SCILAB遵循GPL 2.0开源协议,源代码、用户手册及二进制的可执行文件都可以通过官网免费直接下载使用。用户不仅可以在SCILAB的许可证条件下自由使用该软件,还可以根据自己需要修改源代码。
2)Octave
Octave是一个类似MATLAB和Scilab 的数学软件包,可以进行各种运算,编程。它还有丰富的C++接口可以让用户编程时调用。其配套的绘图工具采用gnuplot。Octave的使用也是基于字符终端模式的,当需要绘图时,将会调用gnuplot进行数据绘图,并显示出来。
Octave 是用C++编写的,它内容丰富的库也可以供用户在编写软件时调用。Octave同时还支持Fortran等的调用,GSL绑定等。可以由用户定制自己的函数、子程序等。
(2)Matlab的各种工具箱很难被替代
为什么呢#因为Matlab经过多年的积累,各个行业的领域专家凝聚他们的智慧,开发了基于Matlab的包罗万象的,各行各业的工业仿真和验证工具箱。这其中最主要的当然是simulink工具箱。
在使用这些工具箱进行工业仿真实验时,通过一个包装和调用接口和界面,使用者可以在完全不知道里面的仿真具体是干啥,里面的算法具体是怎么运行的情况下,只要自己设计包装几个逻辑框架,调用这些仿真工具包就好,然后在90%的情况下可以运行。
而这一点这对工科很多专业的工业控制和自动化设计部门是意义非常重大的。只要知道总体逻辑,不需要知道细节,就能画设计图,尤其不需要知道每个框图都是具体咋做的。这可以说是一种端到端的高级仿真模式(即不了解具体机理,只要起点和终点就行)。
从这个角度上,目前中国各个行业的工业仿真和验证的软件替换产品,基本是没有的。
因为如上所述,Matlab是一款“让文盲可以写字”的产品。
它不是给做仿真和控制对应的计算方法的人用的。而是给科研部门和工业设计部门中,不懂对应的算法细节,就直接调用对应工具包的人用的。
如果对所有的中国科研部门和企业都禁用Matlab了,那么它们就需要提高现有设计人员的基础素质,需要重新开发大量的工业仿真和设计工具包,这都意味着巨大的设计成本支出。
对于工业控制和自动化这些相关部门,这就是主要的破坏因素,企业不得不雇佣更多的人,也许5倍,甚至10倍,来完成以前同样的工业设计和仿真需求。
(3)解决方案
一代又一代理工科学生对工业仿真和自动化算法的细节不求甚解,失去了对算法的基础创新能力。研究者和开发者们成了“调包族”: 将数据输入“黑箱”(Matlab的Toolbox ),然后就只能听天由命看结果了。这也造成了我们对像Matlab这样的计算软件和国外各种开源工具包的路径依赖。
从现在开始,在各行各业,各个工业领域,我们需要全社会,全行业共同行动起来,凝聚行业领域的智慧,进行算法编程,在不断的试错中,理解这些仿真和自动化算法的核心奥秘,完成各个行业的专业工业仿真和自动化工具包的开发和共享(这个当然应该是有偿共享的),从而开创我国原创工业科研的新时代。
Matlab的被禁,将促进国内开始重视原创算法的开发和整合,或许这给相关软件开发者提供了更多的机会!