【新智元导读】近日,哈工大、哈工程MATLAB被禁用一事还在持续发酵。有关国内重新开发MATLAB需要多久,知乎上发起了热议。有网友认为,基础功能开发替代品不难,但重构Simulink需要至少十年。
随着哈工大、哈工程MATLAB被禁用一事还在持续发酵,有关中国开发MATLAB需要多久的问题上了知乎热榜。
有网友认为,基础功能开发替代品不难,开源软件也可以短期内解决短缺问题,但想要实现MATLAB的复杂生态需要至少十年。
想要解决软件依赖问题,最重要的就是要加快替代软件开发,同时规范商用软件市场,让国产软件有发展空间和用武之地。
那么国内开发MATLAB需要多久呢?
复制基础功能不难,重构Simulink至少需要十年
1、数十年积累的复杂生态难以超越
大部分人表示,基础功能勉强可以替代,但真的要想实现MATLAB的复杂生态还需要至少十年的时间。它背后的生态,算法,是集齐大批各个行业的有代码能力和算法能力的博士工作数十年积累而成的。
读者表示,「用过MATLAB的人都知道,效果优化的非常好,试想就算法优化咱们能数年内做到MATLAB现在的水平吗,我真不希望大家盲目乐观。」
如果只是实现一些基础功能,MATLAB完全可以由Octave,高仿版Scilab,或是Python和走在学术前沿的Julia,就足以满足至少80%人的需求。
而MATLAB的Simulink和各种领域的toolbox是需要不断积累经验,在现实工业、应用场景不断交互打磨,在时间上需要不断完善,才可以成型,这些是无法进行复制的。 重构Simulink不现实,Simulink工具包涵盖的专业广泛,只能是各自领域进行重构,然后由某个公司去整合。
特别是MATLAB内部的bug修复和算法成熟和稳定性,一个算法的成熟是需要时间积累和实践验证的。
投入大量时间是一方面,还有许多人可能会高估了其真实成本,慢慢的迭代,进步,在科研领域和工业领域的试错成本也是非常巨大的。 另外,对于工程师和科研工作者,MATLAB不仅仅是一个计算软件,还是一个百科全书。还包括各个行业入门教材的帮助文档,示例代码等,这种积累又怎么能轻松复制呢?
2、MATLAB线性代数库基于MKL,而即使开源项目也绕不开MKL
MATLAB的线形代数库基于Intel的MKL,而MKL是针对Intel的CPU专门优化过的,目前也没有合适的国产CPU可以替代Intel,即使有一些开源项目有类似功能比如Eigen3,但它的底层还是MKL,所以绕开MATLAB和Intel重新开发一个高性能线性代数库难度很大。 所以按照这种观点,中国重新开发MATLAB并达到相应的水准,耗时会非常长,至少十年。
一句总结很精辟,真正开发一个像MATLAB这样的软件,难度不亚于开发一个鸿蒙系统。
有希望,短期内先解决有无
对国产开发未来有信心的网友主要提到了以下几个观点:
1、MATLAB本身已经略显颓势,禁用提供了一个契机
有网友表示,即使不是因为被禁用,MATLAB逐渐被替代也是大势所趋。现在用Python做科研和MATLAB做科研已经分成了两大派,MATLAB派处于劣势。
而且目前Python在科研中的活跃度相比之下要高很多。
MATLAB上月流行度则不足0.90%。
知友表示,「MSC Easy5甩Simulink几条街。」感觉是里子和面子的问题。
有观点对上述提到「绕不开MKL」进行了反驳,指出MATLAB线性代数库基于的MKL虽然不是开源的,但可选用国产良心openBLAS作为替代,在同样使用simd和多核并行的前提下这两者的性能最差也应该保持在一个数量级之内。
2、短期内先解决有无的问题,再考虑长期。
从市场的角度,从头开始开发一个MATLAB显然不现实。
如果事情真正严重到一定程度,倾尽全力,组织现有代码和工具,可以拼凑起来一个MATLAB。开源软件虽然性能一般,但是能立刻解决有无的问题。
有网友建议,在当前资源的基础上,开发专门针对MATLAB Simulink的产品,做个新时代的仿真建模平台,不求全面只求针对性地解决短缺的问题。 当然这个过程里,人才培养和性能优化还需要漫长的时间。但是能够短期内解决有无的问题。
3、MATLAB替代不难,只是做的早培养了用户习惯
也有读者表示,就好比禁用了Windows系统我们还有Linux一样。
读者当中,一位数学教师表示,「我没那么悲观。作为数学专业,虽然我用的是MATLAB,但是我知道我用的很多东西无非是数学,很多我懒得读别人代码就自己看数学原理自己编。他禁用了我明天就可以用Python。而且我的学生基本都用的是Python,开源的。没有大家想象的那么难,只是因为他先做了,培养了用户习惯,所以一直没有后来者。」
大家做不出微信替代品不是因为开发不出来程序。是开发出来也没法占领市场,用户已经习惯。很多人说office特别难,但还出现了金山办公。 从这个比喻来讲,想开发一个MATLAB不难,但是想培养一样的用户基础占领市场是有很大难度的。
国产工程软件路在何方?
归根结底,先不谈能不能替代的问题,这件事敲响了一个警钟,即国产工程软件路在何方? MATLAB的源代码是用三种不同的语言编写的,即C,C + + 和 Java。
一位做从C/C++开始做工程软件开发的网友表示,开发本身不难,开发多久难说。
他认为,「禁用MATLAB的真实影响是很小的。MATLAB最大的竞争力是已经培育好的用户,很多工科学生读本科的时候就学到怎么用这个软件了。但是,MATLAB并没有掌握不可替代的技术,它的计算方法都是可以参见相关论文,学术界也开发了很多可以具有替代功能的开源工具。此外,MATLAB越开发越臃肿,越来越耗内存。」
「工程软件的核心算法大多不是软件公司自己开发的,而是从已有的获得广泛认可的文章中获得的。计算软件公司即使自己开发了一套新的方法,也会发表相应的文章以获得学术界和工业界的认可。」
所以,问题不在于开发,而在于一直以来,国产工程软件缺乏市场和用户。
相比之下,MATLAB多年来形成的用户生态,已确立了在学术界的地位,研究人员做论文就需要采用它的格式和数据。如要开发新的软件就要兼容,无法从一开始就取代MATLAB,这需要时间。
像MATLAB一类商业化很好的工程软件最大竞争力来源于市场和用户 原因有二。
第一,工业界一般不喜欢更换新软件,除非新软件有原软件没有的,通常软件的价格并不是主要考虑的因素。在市场已经被国外软件占据的情况下,本土软件再想进入工业界十分困难。
第二,工业软件的学习成本非常高,用户培养起来比较难。事实上,很多工程软件从大学就已经开始培育用户,一个使用惯了其他软件的工程师也不大会切换到一个新的软件上去。
所以本土开发的软件想进入市场非常困难,新开发软件的用户生态很难在短期内建立。从这个角度讲,国产工程软件才是真正任重道远。有了真正完善的用户生态,才不再惧怕未来的卡脖子。
参考链接:
https://www.zhihu.com/question/400835896/answer/1283550638
https://www.zhihu.com/question/40083589
MATLAB开了第一枪,中国该怎么应对?
我们都知道美国政府不是一只好鸟,但当它对高校师生和学术圈下手的时候还是让人始料未及。
5月22日,美国商务部将中国十三所高校列入了“实体名单”,从法理上开始了对中国高校科研发展的围剿。
6月9日,美国司法部起诉了和武汉理工大学有合作的美国院士,哈佛大学原化学与化学生物学系前系主任Charles Lieber。理由是该院士未如实报告与中方的合作情况,最高可获刑五年,保释条件之一是不再接触相关中国合作机构。同一天还有其他中国学者也被起诉,而且不得保释。一时间,中美学术交流之路笼罩在浓密阴霾之下。
上周,这只霸权主义的鸟儿又作妖了,这次的禽鸟之声是MATLAB。
谁也没想到,MATLAB被首先动用直接制裁国内高校
6月6日,哈工大的师生在正常使用MATLAB时,突然跳出了反激活通知,但是还能使用。到了第二天启动 MATLAB 时就显示授权许可无效,网页也无法登录哈工大域名的账户。几乎同一时间哈工程的师生们也遇上了相同的问题。
事情发生后,哈工大、哈工程师生及校方立刻与开发MATLAB的公司——MathWorks进行了严肃的交涉。现在已经可以确定,两大学的相关授权已经因为美国最新的进出口名单而终止了。
对大学下手令人不齿,已经付费的软件突然停止授权又过于霸道。此事一经曝光,就频繁登上热搜。外交部也做了克制但是明确的回应,指出这是“非常错误的消极言行”,并认为美国的制裁最终将伤害到自身。
为什么是MATLAB?
美国首先祭出禁用MATLAB这招似乎在意料之外,但细想又在情理之中。MATLAB作为一个跨平台的数学计算软件,覆盖了几十个相关学科的需求,在学术圈中影响力很大。笔者在文献检索平台Web of Science上进行了搜索,有近十万篇英文论文使用了这个软件进行数据分析、绘图和应用开发。事件发生之后,舆论的反响也证明了这一点。
其实有很多专业软件比MATLAB技术要求更高,在特定学科内更无可替代,但是影响力不如MATLAB那么广泛。有些专业软件,除了小学科的人之外几乎都没听过。在中美贸易战日益政治化的今天,先禁用知名度更强的MATLAB无疑能起到先声夺人的效果,也有利于美国政客炒作议题。
另外,禁用MATLAB虽然不能釜底抽薪,但能起到立杆见影的效果。作为一个主打单机使用的软件,MATLAB从发明的第一年起就面临着盗版问题。编译原理告诉我们,不存在无法破解的大规模单机软件。因此MathWorks不是从软件销售或者加密上想办法,而是从规范使用上下手。
该公司和全球主要的英文学术出版商都保持了良好的关系,并且豢养了一大批熟悉当地政策并有一定背景的法务。一旦有学者的论文采用了MATLAB,在发表时就会被要求拿出MathWorks公司的授权。如果拿不出来,轻则论文无法发表,重则还会面临法律上的纠纷。
所以,哈工大、哈工程的师生虽然可以继续使用盗版的MATLAB进行科研,但是完成的论文将很难投在高水平的英文学术期刊上。在现行的评价体制下,哈工大、哈工程师生的成果有被低估的风险。
另外MATLAB中有一个称之为Simulink可视化编程仿真工具,可以用傻瓜式的拖动进行很多问题的建模,被广泛用于通讯、控制、信号处理、视频处理和图像处理系统。如果没有Simulink,通信、控制、信号、车辆等专业的研究效率都会受到影响。哪怕不用Simulink,很多这方面的仿真软件也只提供MATLAB的接口,是MATLAB核心竞争力之一。
Simulink模拟工业机器人
因此美国把MATLAB推到前线,既造成了很大的舆论,又有实在的效果。
被禁用对大学师生到底影响几何?
由于MATLAB是一个复杂的软件,因此讨论MATLAB被禁用的影响,也必须分层次进行讨论。
MATLAB是一种可以由MATLAB语言操作的软件,MATLAB语言的简易性是使用者喜欢它的主要原因,很多中国大学的非计算学科甚至只教授这种语言。提出这种语言的Cleve Moler教授在新墨西哥大学任教期间希望学生不用学习复杂而且难记的Fortran语言,即可享受到线性代数和数值分析的魅力,于是编写了一个简单的交互式矩阵计算器。
后来这个计算器就变成了MATLAB语言,MATLAB语言在当时冲击了人们关于数学计算语言的定式。时至今日,当年的数学计算的霸主Fortran已经几乎无人使用,而MATLAB一直都保持了相当的人气。
这主要是因为MATLAB充分降低了学习门槛,在计算速度和易写当中保持了一个很好的平衡。与Fortran相比MATLAB是一种动态语言,可以逐步调试,而且可以直接运行,免去了编辑-编译-链接-加载-执行等静态语言繁琐的步骤。它把常用的功能都变成了关键字,避免了不懂编程的人去处理各种库的麻烦。最后,MATLAB简化了控制流,只保留了循环、判断、定义函数等最简单的几种语义。下图是1981版MATLAB的关键字,其中和控制流相关的只有几个,今天它的关键字已经多达近千个,但是必须掌握的控制流关键字就在10个左右。
也就是说学会了这10个关键字的用法加上善于查询MATLAB的帮助手册,就可以进行数学计算、绘图和仿真了,可谓是非常方便了。
81版matlab的关键词
但这部分其实是比较好替代的,Scilab、Octave等开源软件都可以很好的进行替代。其中Scilab与MATLAB关键字的相同度在95%以上,Octave与MATLAB关键字的相同度在99%以上,普通的MATLAB的程序拿到Octave几乎可以不做修改的跑起来。
Scilab和Octave都是开源软件中MATLAB的有力竞争者
更何况今天的MATLAB语言不过是在英特尔编写的MKL(数学核心函数库)上做的一层语法糖。编程基础好的人完全可以直接调用MKL完成研究所需要的科学计算,遇上循环多的测试,这种方法能比MATLAB快十倍以上。
退一万步说,非得用MATLAB处理数据,也可以把绘制图表的数据用MATLAB处理后存储成Excel的格式,用其他软件进行绘图。
MATLAB的第二个层次是多年积累下来的生态,比如说第三方用MATLAB编写的程序库。论文里总不能说研究用到的程序库都是自己写的吧?
但是这个问题其实也不大,首先某些学科的研究者早就利用更加开放的工具了,比如研究神经网络的一般都用开源的Python及其相关库,研究机器学习的用开源的Julia及其相关库的也很多。
对于其他学科的研究者而言,由法国国家信息、自动化研究院的科学家们开发并开源的Scilab在数据分析、图像处理 、电路仿真、控制系统等十余个领域也有比较丰富的程序库,可以满足一定的要求。而由GNU赞助开发的Octave,其相关库也非常丰富,从工具库的齐全上来说,笔者认为开源软件可以实现约70%-80%。
最大的问题在于之前提到的Simulink。哈工大和哈工程被禁用MATLAB之后,网友们集思广益列出一系列替代选择,但是其中绝大多数软件和程序没有类似于Simulink的模块和库。就目前来看,开源软件中只有Scilab有类似的Xcos,Xcos也是一个可视化编程仿真工具。经过亲身体会,其功能大约有Simulink的30-40%,还有不小的差距。
但是Simulink本意毕竟是一种针对不会编程者的仿真工具,Simulink的全部功能通过严肃的编程都能实现,而且已经有相当多的仿真程序库可供调用。因此对于哈工大、哈工程里真正重要的研究我们不必过于担心,更重要的是美国将魔爪伸向中国高校,我们该如何应对。
中国应全局统筹自强不息
MATLAB被禁用相对来说并没有那么可怕,因为多少还有一些替代品。国内院校使用的EDA、CAD类辅助设计软件,主要也是来自美国公司,而且国内鲜有替代品。在计算机辅助工程(CAE)领域,国内虽然有替代品,但从界面、方便性和可靠性上来说与国外的产品差距不小。
面对可能进一步的施压,我们必须全局统筹,拿出一整套方案。不能头痛医头,脚痛医脚,要做好打持久战的准备。不能今天MATLAB被禁用了,就一窝蜂的搞数学计算软件。明天工程有限元、有限差分法软件被禁了,又一窝蜂的搞CAE软件。
高校软件被禁,最直接的影响就在投论文上。中国的出版商肯定不会为了美国指定的“清单”不准国内的学者出版。但是国内期刊在学术评价上长期遭遇制度性的歧视,中文写的国内期刊无论如何好,很多地方最多比照SCI四区进行评价。而英文论文只要被SCI收录,至少都是四区。
在美国制裁手段日益逼近学术圈的当下,建立新的学术评价体系不仅非常必要,而且已成为迫切需要解决的问题。
当然中文期刊自身也存在着很多问题,很多甚至是学术道德问题。今年初《冰川冻土》和《银行家》两本核心期刊,分别被发现存在学术不端行为,再次揭开了中文期刊存在的这些问题。因此中文期刊必须建立更严格的监督机制,这样才能使得学者们愿意在中文期刊上投稿。
这次MATLAB被禁,有学者认为“中方回应需要有恰如其分的评估,譬如由国家与企业对替代的开源软件做深度开发”。笔者完全同意这一说法,但是想换一换说法——替代MATLAB的软件,中方必须做深度开发,必须走一条自强之路。
这么说,是有感于自主可控软硬件发展的现状。正如之前的分析,MATLAB语言和平台本身科技含量不高,可替代性最强。而积累的工具库可替代性就相对弱一些了,Simulink以及matlab为大学和企业定制开发的特色功能则更加不可替代。
按照需要什么,我们就研究什么的思路。发展自主可控软件的人应该首先考虑深度开发开源软件实现替代Simulink。但是现实是仿造另一个MATLAB语言甚至是套皮一个成果的舆论影响更大。而且国内对于自主软件的发展,尤其是商业收益上规划非常不合理。很多人只看到生态拥有者能获得的收益,看不到为了培植生态付出的艰辛。
仿造另一个MATLAB语言的国产平台,如果发展起来,就意味着位于生态圈的中心,真金白银滚滚而来。无数国产软硬件看不破、放不下的就是这个迷梦。但是别人比你发展的早,开发团队又比你强大,仅仅是走一遍回头路,凭什么就能取代原有霸主的地位?
并非危言耸听,回顾过去,这种迷梦加上弄虚作假就是“汉芯”,加上言过其实就是编程语言“木兰”,加上引进吸收消化不良就是“华芯通”,一堆迷梦自我相加就是犹如过江之鲫鱼般死去的那些“国产系统”和“中文编程”。
尤其是中文编程,在编译框架和宏编程技术已经极为先进的当下,模仿一种语言,将关键字替换为中文已经是非专业人士也可以做到的了。而且关键字因为数量有限而且固定,对方便理解来说其实没有变量名和函数名重要。目前主流的编程语言都支持以中文为变量名和函数名,但是一些库因为历史原因支持这些变量还有问题。
从提升中文影响力和方便中国人理解的角度出发,解决各语言的官方库对中文的支持显然比造一个“中文编程”强得多。但是前者主要是国外开发者在做,后者目力所及都是国内的开发者在反复写这样的程序。
说了这么多,其实就是希望国内的应对计划能综合统筹,集中好资源和开发力量,真正踏踏实实地深度开发,真真切切的改善需求迫切的“痛点”。真能如此,则美国的黑枪,莫说是MATLAB一枪,就是十枪百枪万枪也都无法阻挡中国科技发展进步的步伐。