包云岗:“Matlab被禁”事件启发:我们如何做出能卡别人脖子的软件?-风君雪科技博客

  今年 6 月,哈尔滨工业大学、哈尔滨工程大学因被列入美国商务部实体名单,并被禁用数学基础软件 Matlab,引发了关于国产软件的大规模讨论。

  对于大多数理工科学生而言,Matlab 并不陌生,Matlab 是一款被广泛应用于教学、科研、工业领域的基础软件,而这类 EDA(Electronic Design Automation,电子设计自动化)软件,却刚好又是我国的短板。正因如此,不少行业人士感慨,这次我们真的是被卡脖子了。

  6 月 19 日,中科院计算所研究员、先进计算机系统研究中心主任,中国开放指令生态联盟秘书长包云岗在微博上分享了他在「CCF YOCSEF 杭州· Matlab 被禁之特别论坛」上关于“Matlab 被禁”事件带来的思考与启发的发言。

  包云岗指出,当我们在思考如何解“Matlab 被禁”这个燃眉之急的同时,更需要考虑如何才能在未来做出像 Matlab 这样的工具,做出能卡别人脖子的技术。

  至于如何做出像 Matlab 这样能卡别人脖子的软件,包云岗总结为如下四点:

  第一,把东西做出来,而不是追求把论文发出来;

  第二,把东西用起来,而不是做完就扔了;

  第三,把教学场景用起来,而不是把教学当作负担;

  第四,把持久战意识树立起来,而不是期望速胜论。

包云岗:“Matlab被禁”事件启发:我们如何做出能卡别人脖子的软件?-风君雪科技博客

  以下为包云岗在「CCF YOCSEF 杭州· Matlab 被禁之特别论坛」发言原文,雷锋网做了不改变原意的编辑整理:

  很多人都在思考如何解决“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 是 Moler 教授想把 EISPACK 和 LINPACK 应用于教学过程中的产物。如果 Moler 教授不是用心去做教学,不是为了能让学生更好地掌握线性代数与数值分析,更容易地使用 EISPACK 和 LINPACK 这两个软件,那么他就不会有动机自己动手去写一个 Matlab 小工具来把这两个软件接口封装起来,从而方便学生使用。

  今天,由于严苛的科研竞争环境和考核压力,很多人都把教学当作了一种负担,认为会影响科研。但教学其实是试验新技术、新工具最好的应用场景,因为试错成本很低,而且学生的创新性和主动性,还能帮助改进优化技术和工具。Matlab 最终走上了商业化道路,就是因为 Moler 教授在斯坦福大学给学生上课时,有两个学生对 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 那样的工作,做出能卡别人脖子的技术。这需要我们做出改变,观念上的改变,行动上的改变。