很多人都在思考如何解决“Matlab被禁”这个燃眉之急问题。大家回顾了中国的工业软件发展之痛,批评国内的盗版问题、知识产权保护问题、重硬件轻软件等一系列问题。也提出了很多好的建议,比如给了针对Matlab各种功能的开源软件替代方案。这些都算是“昨天和今天”的事。
文|包云岗 中科院计算所研究员
现在我想和大家一起讨论一下关于“明天”的事。我们每个人可以问自己一个问题:从现在这个时间点开始,给10年时间,甚至20年时间,我们能做出一个卡别人脖子的东西吗?(并不是说真的要去卡别人脖子,而是说成为别人离不开的东西)
如果从这个角度来看这次“Matlab被禁”事件,那么也许可以给我们更多的是启发——我们都知道Matlab最初只是新墨西哥大学Clever Moler教授在1970年代用于教学中的一个小工具软件,那它为什么能在几十年后成为卡我们脖子的利器?
我们一起来梳理一下Matlab发展过程中折射出来的几个理念:
一、把东西做出来,而不是追求把论文发出来
Matlab网站上有一篇Moler教授自己在2018年写的Matlab简史[1]。他在开头就写道,在1970年和1975年他所在团队向NSF申请了两个项目,目标是“探索开发高质量数学软件的方法、成本和资源”。他自己也认为,某种程度上这两个项目是失败的,因为他们没有发表出一篇论文,他们只是开发出了两个软件:一个是EISPACK,另一个是LINPACK。而且这两个软件也谈不上多大的学术创新,因为EISPACK就是把1965-1970年发表论文中用Algo60写的算法翻译为Fortran,而LINPACK则是直接用Fortran重写一遍。
二、把东西用起来,而不是做完就扔了
虽然EISPACK、LINPACK没有论文,学术创新也似乎不是很高,但确实两个很有用的软件。EISPACK的开发团队在1974年代写了一本使用手册,我在Google Scholar上查了一下,到现在已经被引用了1800多次,1970-1980年代使用非常广泛。LINPACK更是世界超级计算机排行榜Tops500的基准测试程序,可以说是影响了世界超级计算机的发展。
三、把教学场景用起来,而不是把教学当作负担
Matlab是Moler教授想把EISPACK和LINPACK应用于教学过程中的产物。如果Moler教授不是用心去做教学,不是为了能让学生更好地掌握线性代数与数值分析,更容易地使用EISPACK和LINPACK这两个软件,那么他就不会有动机自己动手去写一个Matlab小工具来把这两个软件接口封装起来,从而方便学生使用。
今天,由于严苛的科研竞争环境和考核压力,很多人都把教学当作了一种负担,认为会影响科研。但教学其实是试验新技术、新工具最好的应用场景,因为试错成本很低,而且学生的创新性和主动性,还能帮助改进优化技术和工具。Matlab最终走上商业化,就是因为1980年Moler教授在斯坦福大学给学生上课时,有个叫Jack Little的学生,对Matlab很感兴趣,后来主动提出用C重写一遍,并移植到IBM兼容PC上。当他们完成PC-Matlab后,便于1984年一起成立了MathWorks公司。事实上,很多技术最早都是从课堂上发展起来,比如RISC架构是David Patterson教授在伯克利的课程实验。
四、把持久战意识树立起来,而不是期望速胜论
坚持围绕一件事做,几十年后的累积效应是惊人了。中国今天被卡脖子的东西,几乎都是别人积累了20年以上的东西。从第一版Matlab算起到现在已经有40年,1980年代初的第一代EDA软件到现在也有快40年,Intel在1970年左右第一代微处理器到现在已经有50年。台积电1987年成立到现在也是积累了30多年。其实在学术界也有很多有影响力的工作也是积累很多年的产物,我们可以看一下ACM System Software Award[2],获奖的软件基本上都是持续积累了几十年,比如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多万用户。虽然从营业额看并不大,但其实这种模式更值得学习——不断积累,把一项技术做到极致,成为某个细分领域的隐形冠军。
(1)把东西做出来,而不是追求把论文发出来;
(2)把东西用起来,而不是做完就扔了;
(3)把教学场景用起来,而不是把教学当作负担;
(4)把持久战意识树立起来,而不是期望速胜论。
——以上为CCF YOCSEF杭州· Matlab被禁之特别论坛的发言
补充:这个发言引起了很多人的共鸣,有朋友还举了个例子:美国雪城大学的杜文亮教授最近出版了一本书介绍近20年来自己教学中开发的平台和工具,现在已经在60多个国家的1000多所大学使用,这个贡献和影响力甚至比他自己的科研还要大了。
但也有不少学者认为现在国内学术界要做到这四点很难。尤其是在高校,如果不发表论文,花大力气在教学上,那么考核、评职称就会比较难,更不要说一些学术帽子了。所以在国内要按照那四点去做,很可能等于断了自己的学术生涯发展道路。
前几年看到山东理工大学毕玉遂教授的故事,却是一个鲜明的对比:他从2003年开始坚持研究一种泡沫发泡剂,一直到2011年终于研制成功,2017年卖了5亿专利费。毕教授在一个采访中提到自己毕业于专科学校,在专科学校呆了很多年,反而让他更注重研究“接地气的、市场迫切需要的技术”,也让他更容易拥有淡泊名利、持之以恒的心态。
因此,科研人员自身观念和行动的改变才是根本的。很多人都期望环境变好了才做出改变,期待自上而下的改革。但为何不先从自我做起,通过自下而上来改变环境?中国计算机学会CCF理事长梅宏院士有两句话讲得特别好:“要相信大多数科学家心底的'良知' ”,"相信公平即使不发生在空间上,也一定会发生在时间上”。我们先要建立这样的信念。
当然外部环境也是非常重要,这又涉及到学术评价这个硬骨头问题了。其实针对这四点,各个单位都可以做出一些容易操作的小措施:比如基金委也可以像美国NSF那样支持结题时提交软件或工具,而不仅仅是论文与专利;高校可以在职称评定时增加“科教融合”创新的比重等等。
[1] https://www.mathworks.com/company/newsletters/articles/a-brief-history-of-matlab.html
[2] https://en.wikipedia.org/wiki/ACM_Software_System_Award
背景简介:本文作者包云岗,中国科学院计算技术研究所研究员、所长助理、先进计算机系统研究中心主任,中国科学院大学岗位教授,中国开放指令生态(RISC-V)联盟秘书长。主要研究领域为开源处理器与敏捷设计、数据中心体系结构等,主持研制多款达到国际先进水平的系统,相关技术已在华为、阿里、Intel等国内外企业应用。曾获“CCF-Intel青年学者”奖,ARM2018全球研究峰会45分钟特邀大会报告、中科院青年创新促进会优秀会员,获“CCF-IEEE CS”青年科学家奖、共青团中央“全国向上向善好青年”荣誉称号。