我们如何做出卡别人脖子的软件?
来源:中国科技日报 更新时间:2020-06-24

很多人都在思考如何解决“Matlab被禁”这个燃眉之急。很多人回顾了中国的工业软件发展之痛,也提出了很多好的建议,比如给了针对Matlab各种功能的开源软件替代方案。

这些都算是“昨天和今天”的事,现在我想讨论一下关于“明天”的事。每个人可以问自己一个问题:从现在这个时间点开始,给10年甚至20年时间,我们能做出一个卡别人脖子的东西吗?(并不是真的去卡别人脖子,而是要成为别人离不开的东西)

我们都知道Matlab最初只是新墨西哥大学教授Clever Moler在上世纪七十年代用于教学的一个小工具软件,那它为什么能在几十年后成为卡我们脖子的利器?我们一起来梳理一下Matlab发展过程中折射出来的几个理念。

一、把东西做出来,而不是追求把论文发出来。Matlab网站上有一篇Moler在2018年写的Matlab简史。他在开头就写道,在1971年和1975年,他所在的团队向美国国家科学基金会申请了两个项目,目标是“探索开发高质量数学软件的方法、成本和资源”。他自己也认为某种程度上这两个项目是失败的,因为他们没有发表一篇论文,只是开发出了两个软件:一个是EISPACK,另一个是LINPACK。这两个软件也谈不上多大的学术创新,EISPACK就是把1965—1970年发表论文中用Algo60写的算法翻译为Fortran,而LINPACK则是直接用Fortran重写一遍。

二、把东西用起来,而不是做完就扔了。虽然EISPACK、LINPACK没有论文,学术创新也似乎不是很高,但它们确实是两个很有用的软件。EISPACK开发团队在1974年写了一本使用手册,到现在已经被引用了1800多次,特别是上世纪七八十年代使用非常广泛。LINPACK更是世界超级计算机排行榜Top500的基准测试程序,可以说影响了世界超级计算机的发展。

三、把教学场景用起来,而不是把教学当作负担。Matlab是Moler把EISPACK和LINPACK应用于教学过程的产物。如果Moler不是用心去做教学,不是为了能让学生更好地掌握线性代数与数值分析、更容易地使用EISPACK和LINPACK这两个软件,那么他就不会有动机写一个Matlab小工具来把这两个软件接口封装起来,从而方便学生使用。

今天,由于严苛的科研竞争环境和考核压力,很多人都把教学当作一种负担,认为会影响科研。但教学其实是试验新技术、新工具最好的应用场景,因为试错成本很低,而且学生的创新性和主动性还能帮助改进优化技术和工具。Matlab最终走上商业化,就是因为Moler在斯坦福大学给学生上课时,有两个学生对Matlab很感兴趣,主动提出用C语言重写一遍,同时移植到IBM电脑上。

四、把持久战意识树立起来,而不是期望速胜。坚持围绕一件事做,几十年后的累积效应是惊人的。中国今天被卡脖子的东西,几乎都是别人积累了20年以上的产物。第一版Matlab到现在已经有40年,1980年代初的第一代EDA软件到现在也有近40年,1970年前后英特尔第一代微处理器到现在已经有50年;台积电1987年成立,到现在也积累了30多年。学术界有很多有影响力的工作也是积累多年的产物,我们可以看一下 ACM软件系统奖,获奖的软件基本上都是持续积累了几十年。

再仔细剖析一下Matlab以及对应的公司MathWorks,它们可以说是持久战的典范。MathWorks在1984年成立,只有1名员工。第一笔收入是1985年卖给了麻省理工学院10个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这样的工具,做出能卡别人脖子的技术。这需要我们做出改变——观念上的改变、行动上的改变。

(作者系中国科学院计算技术研究所研究员,此文为作者在“CCF YOCSEF杭州·Matlab被禁之特别论坛”上的发言,有删节)