来源:知乎
编辑:梦佳、雅新
随着哈工大、哈工程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/400835896