号称可替代MATLAB的国产软件来了,网友热议:套壳还是真自研?
本文转载自:新智元
来源:知乎 | 编辑:舒婷、白峰
【导读】「MATLAB热」整整持续了两周,关于MATLAB被禁之后中国科研人员如何应对引发了热烈的讨论。近日,国产软件TRUFFER称:一年内完全实现科学计算与图形功能,三年内完全实现 Simulink,100% 自主版权源代码,这一声明让TRUFFER从一个籍籍无名的小软件被推上风口浪尖。
距离哈工大、哈工程MATLAB被禁已经过去两周,但是关于MATLAB的讨论从未停止。
大部分人只是着眼于寻找MATLAB替代品,但是,近日,一个国产软件TRUFFER站出来了:我就是MATLAB的替代品。
一时间,众生哗然。要知道,寻找「替代品」的道路上,科研人员都专注在将各类主流的开发软件结合以替代功能,让国产公司开发新的软件都是「最末」的事情。现在有一个国产软件出来「夸下海口」,确实让科研人员兴奋又好奇。
「籍籍无名」的TRUFFER的雄心壮志:1年内实现科学计算与图形功能,3年内搞定Simulink
走进这个「声名鹊起」的软件之前,先看看软件背后的公司。
论规模来看,这家公司并不是很大,成立于2002年,就官网介绍而言一开始工作重心应该是在图形软件开发上,旗下目前有四款产品,分别是多文档管理、联高资产管理、数控加工仿真和“原本”小工具。
但是就公布的团队人员从业年限来看,都是「老程序员」了——分别具有23、25、30年编程经验,确实是经验丰富。
尽管有小的仿真工具,但这家公司的主要产品和MATLAB确实搭不上边。另一方面,成立18年却不显山不露水,「骨灰级」的程序员不透露姓名,这家公司充满了神秘色彩。
接下来我们看一看这款万众瞩目的产品:TRUFFER。
首先是其官方号在MATLAB那条讨论下放出的壮志豪言:
「半年内实现 MATLAB 科学计算与图形显示的 70%;1 年内 100% 全部实现;3 年内完全实现 Simulink;100% 自主版权源代码;无需 #openGL# 等组件支持的三维、四维图形显示。短期内将在周全性(需要积累)、高性能并行计算(需要厂家支持)、专业的扩展工具箱(第三方支持,大家一起努力)等方面会稍微落后,不过足以应付大家 90% 的日常科研需求。我们承诺,至少在 10% 的功能,比 MATLAB 更好用、易用。」
「满足大家90%的科研需求和10%的功能比MATLAB更好用、易用」确实是一个很强的「卖点」。先看一下TRUFFER的部分源码树:
可以看到这个架构设计和MATLAB部分功能还是很贴近,核心在于矩阵的一些运算。根据官方发布的数据来看,核心运算都能够完成,并且画图的效果非常不错。
以矩形域最小二乘曲面拟合为例,下图的三维显示核心没有openGL,完全是自主知识产权的,拟合的结果实际上是一个六维曲面。
还有TRUFFER用于SR-71黑鸟超高速流场仿真的基础图片,读取OBJ文件,自主三维渲染。并且是100%C#自主代码,没有用openGL或directX。
TRUFFER官方在回应的时候也勾画了一下现行软件的使用场景。
第一个是用试验数据绘制曲线,导出公式;科研人员获得了一些数据,希望对其进行画图拟合。第二个是三维有限元计算(简单物体);就是解稀疏矩阵。
并且TRUFFER是可以为研究人员提供源码的,知乎用户@harryzhou就提供了一份TRUFFER发给他的源码。
三个源文件分别是CMatrix.cs,Complex.cs,Matrix.cs,分别对应了复数矩阵、复数和实数矩阵的基本运算。至少在代码架构上,TRUFFER是能够完成它现行设计的场景的。当然还有一些常规的矩阵运算。
懂一点代码的开发者看到这个源码就知道,TRUFFER确实还在开发初期。但是就公司和感兴趣的开发人员交流的情况来看,TRUFFER的公司其实是一个比较诚挚、有大理想的公司。毕竟「满足大家90%的科研需求和10%的功能比MATLAB更好用、易用」不是所有软件公司都说的出口的。
「只完成1%就来开发布会」的TRUFFER:有诚意也有差距
对MATLAB稍微有点了解的开发者们应该已经反应过来了:TRUFFER是照着MATLAB去设计的,但是完成的内容实属冰山一角。
这个软件近几日进入公众视野之后实属饱受争议,主要在以下几个争议点。
1、「打假」自主研发:套壳Octave
知乎网友@立党指出,TRUFFER是个套壳Octave的「假」自主研发的软件。
许多知乎用户都表达了相同的观点:开源代码不代表交出版权,指责TRUFFER侵害Octave版权。对此,也有拿到开源代码的开发者为TRUFFER「鸣不平」。
是否套壳,读一读源码就能认知到。按照这位答主说的情况,TRUFFER源码应该是没有问题的,纯手打,不涉及套壳的问题。至于实际的算法本身没有什么可变性,因此很可能导致代码结构类似。
知乎用户@寂寞在唱歌说的这段换其实很客观。
如果真的深究「套壳Octave」这个问题,建议感兴趣的研究者可以问TRUFFER官方要一份源码再品读一下。
2、「技术差距」过大,产品进度堪忧
虽然TRUFFER放了源码,但是一共就几千行,实现的功能也是最最最基础的。甚至连求解线性方程组的代码也没有放出,实现的功能基本上都是一维的。
就连之前为TRUFFER说话的那位匿名大佬也有些唏嘘了。
甚至有人怀疑这是不是同学课设的大作业的源码,毕竟这个代码,确实有点粗陋了。看一下知乎用户@梨雪梅的发言。
知乎用户@architect在Mathmatics工作,看到TRUFFER也不禁从期待到失望。
但是TRUFFER公司自一开始就声明了,这是「初版」,这几乎为以上所有的质疑提供了「看似合理」的解释。因为还在开发初期,功能不完善很正常。所以@伍亦勤的这句话很真实。
对于秉持各种态度关注TRUFFER的人们而言,还是希望TRUFFER在「替代MATLAB」的蓝图上不是「听子弹飞」,而是「枪响落地」。
备受关注的MATLAB开发问题?听听中科院包云刚研究员怎么讲
「MATLAB热」持续了两周有余,许许多多专家都参与了讨论。其中,中科院计算所先进计算机系统研究中心副主任包云岗教授在CCF YOCSEF杭州论坛上发表了自己的见解。
这个演讲在计算界影响颇深。包教授的这条微博甚至被转发了将近4000次。
包教授原文强调了,类似于MATLAB这种产品,做出来并且将其应用才是最关键的,而不是为了「科研成就」去发表论文。同时,把持久战意识树立起来,而不是期望速胜论。要承认现今与对手的差距,迎头赶上。
抛开MATLAB这个软件不谈,在思考如何解「MATLAB被禁」这个解燃眉之急的同时,更需要考虑如何才能在未来做出像MATLAB那样的工作,做出能卡别人脖子的技术。不要别人做好了,想着去「模仿」,而要做出真正的属于「中国技术」的东西。
最后,回到TRUFFER这个软件上来。不得不承认,这个软件现在的功能离「替代MATLAB」这个目标差距非常大,甚至引发的讨论热度都有「炒作」的嫌疑。但是,能说出「1 年内 100% 全部实现;3 年内完全实现 Simulink;100% 自主版权源代码。」的公司本身就是令人期待的。
技术之间的差距是不可否认的,最初的产品可能很简陋,但不应该被「打压」。毕竟所有复杂而伟大的成就都是从最简单的步骤开始,一步步累积起来的。
希望TRUFFER能够实现自己画的宏伟蓝图,在未来的发展中不负众望。
附上包教授原文:
「很多人都在思考如何解决“Matlab被禁”这个燃眉之急问题。大家回顾了中国的工业软件发展之痛,批评国内的盗版问题、知识产权保护问题、重硬件轻软件等一系列问题。也提出了很多好的建议,比如给了针对Matlab各种功能的开源软件替代方案。这些都算是“昨天和今天”的事。
现在我想和大家一起讨论一下关于“明天”的事。我们每个人可以问自己一个问题:从现在这个时间点开始,给10年时间,甚至20年时间,我们能做出一个卡别人脖子的东西吗?(并不是说真的要去卡别人脖子,而是说要成为别人离不开的东西)如果从这个角度来看这次“Matlab被禁”事件,那么也许可以给我们更多的是启发——我们都知道Matlab最初只是新墨西哥大学Clever Moler教授在1970年代用于教学中的一个小工具软件,那它为什么能在几十年后成为卡我们脖子的利器?
我们一起来梳理一下Matlab发展过程中折射出来的几个理念:
一、把东西做出来,而不是追求把论文发出来。
Matlab网站上有一篇Moler教授自己在2018年写的Matlab简史。他在开头就写道,在1971年和1975年他所在团队向NSF申请了两个项目,目标是“探索开发高质量数学软件的方法、成本和资源”。他自己也认为,某种程度上这两个项目是失败的,因为他们没有发表出一篇论文,他们只是开发出了两个软件:一个是EISPACK,另一个是LINPACK。而且这两个软件也谈不上多大的学术创新,因为EISPACK就是把1965-1970年发表论文中用Algo60写的算法翻译为Fortran,而LINPACK则是直接用Fortran重写一遍。
二、把东西用起来,而不是做完就扔了。
虽然EISPACK、LINPACK没有论文,学术创新也似乎不是很高,但确实两个很有用的软件。EISPACK的开发团队在1974年代写了一本使用手册,我在Google Scholar上查了一下,到现在已经被引用了1800多次,1970-1980年代使用非常广泛。LINPACK更是世界超级计算机排行榜Tops500的基准测试程序,可以说是影响了世界超级计算机的发展。
三、把教学场景用起来,而不是把教学当作负担。
Matlab是Coler教授想把EISPACK和LINPACK应用于教学过程中的产物。如果Moler教授不是用心去做教学,不是为了能让学生更好地掌握线性代数与数值分析,更容易地使用EISPACK和LINPACK这两个软件,那么他就不会有动机自己动手去写一个Matlab小工具来把这两个软件接口封装起来,从而方便学生使用。
今天,由于严苛的科研竞争环境和考核压力,很多人都把教学当作了一种负担,认为会影响科研。但教学其实是试验新技术、新工具最好的应用场景,因为试错成本很低,而且学生的创新性和主动性,还能帮助改进优化技术和工具。Matlab最终走上商业化,就是因为Coler教授在斯坦福大学给学生上课时,有两个学生对Matlab很感兴趣,主动提出用C重写一遍,同时移植到IBM PC上。很多技术最早都是从课堂上发展起来,比如RISC架构是David Patterson教授在伯克利的课程实验。
四、把持久战意识树立起来,而不是期望速胜论。
坚持围绕一件事做,几十年后的累积效应是惊人了。中国今天被卡脖子的东西,几乎都是别人积累了20年以上的东西。从第一版Matlab算起到现在已经有40年,1980年代初的第一代EDA软件到现在也有快40年,Intel在1970年左右第一代微处理器到现在已经有50年。台积电1987年成立到现在也是积累了30多年。其实在学术界也有很多有影响力的工作也是积累很多年的产物,我们可以看一下ACM System Software Award,获奖的软件基本上都是持续积累了几十年,比如LLVM持续优化了17年、Eclipse优化了19年、Wireshark优化了22年、Coq优化了31年,GCC则有33年。
再仔细剖析一下Matlab以及对应的公司MathWorks,可以说是持久战的典范。MathWorks在1984年成立,只有1名员工。第一笔收入是1985年卖给了MIT10个Matlab版权,收入500美元。MathWorks公司早期很不起眼,有个玩笑称它前7年员工数每一年翻一番,1984年1个员工,1985年2个员工,1986年4个员工,直到7年后的1991年也才只有128个员工。和今天很多初创公司相比,这个成长速度就像是蜗牛了。但是他们力出一孔,围绕着Matlab不断增加功能,使Matlab成为一个行业领先的工具软件。1997年,MathWorks的营业额达到了5000万美元,380名员工。如今2019年MathWorks公司营业额是10亿美元,3000多员工,全球有400多万用户。虽然从营业额看并不大,但其实我们更应该学习这种模式——不断积累。把一项技术做到极致,成为某个细分领域的隐形冠军。
最后总结一下,当我们在思考如何解“Matlab被禁这个解燃眉之急的同时,更需要考虑如何才能在未来做出像Matlab那样的工作,做出能卡别人脖子的技术。这需要我们做出改变,观念上的改变,行动上的改变。至于哪些具体的改变,我想前面梳理的四点就算是抛砖引玉吧:(1)把东西做出来,而不是追求把论文发出来,(2)把东西用起来,而不是做完就扔了,(3)把教学场景用起来,而不是把教学当作负担,(4)把持久战意识树立起来,而不是期望速胜论。
——以上为CCF YOCSEF杭州· Matlab被禁之特别论坛的发言」
参考链接:
https://www.zhihu.com/question/403055136