Public
Authored by Vincent Wei

在基础软件领域,你哪儿来的迷之自信?

昨天在群里聊天,胡老师发了一个链接,是美国国家科学院院刊(PNAS)上刊发的一篇论文,题目叫“中国、印度、俄罗斯及美国学生在计算机科学领域的能力比较”。我没仔细阅读,但看这篇论文里边的一张张图表,就大概能够了解到:尽管我们中国人聪明、勤奋、努力、重视教育,但美国学生的计算机科学能力吊打中国、印度、俄罗斯,可以说美国独步天下,其他国家只能望其项背。这篇文章不翻墙也可以看到,所以我在文后给出了链接,有兴趣的同学可以去阅读一下。

当然很多人会质疑这篇文章的公正性、科学性。但我觉得没有任何必要去质疑,因为这是事实,和笔者从业二十多年来的感受是一样的。我写程序,非科班出身,完全是自学成才,编码能力主要通过写代码、看代码、抄代码、改代码而来。说实话,值得学习的代码几乎全部来自美国,只有部分来自于欧洲。我的水平放到世界上,顶多算个中等,但在国内,从业十二年来,我见到过可以达到我这个水平的工程师数量,说“凤毛麟角”都算是多的。

不可否认,计算机科学(尽管我不太认同把计算机相关技术称为科学,但暂且这么叫吧)是美国主导发展起来的。整个计算机科学的基础设施,从集成电路、指令集、编程语言、编译器、内核、图形系统、数据库、互联网、人工智能,都离不开美国公司、大学的各种贡献。更为重要的是,自由软件、开源软件的运动也最早从美国发端并发展壮大,成为现今基础软件发展的主流形式。

可笑的是,昨天有篇自媒体文章却用“中国大脑”这样的字眼来宣传某个国产操作系统。我不反对国产的说法,但说到国产操作系统,其核心全部是围绕 Linux 内核的开源软件,这不是什么秘密。在国际上,这种操作系统被称为”Linux 发行版“,英文叫”Linux distribution",就是以开源的 Linux 内核为核心,集成各种各样的开源软件(也可以含有非开源软件)而形成的一个软件集合。我们可以将这个软件称为操作系统,也可以因为我们做了一些美化、优化、定制工作而称其为国产操作系统。但说这个操作系统是中国大脑,未免言过其实。

任正非先生这两年接受了很多媒体采访,其中有个说法讲“在科技领域,狭隘的民族主义要不得”。就这个论点,笔者举双手赞成。别的行业我不懂,不乱说。但在计算机领域,美国的确独步天下。就拿国产操作系统来讲,内核、编译器、窗口系统、数据库,哪个不是源自美国的?我们做一做表面功夫就成中国的了?

尽管我反对美国政府的各种霸权主义行为,比如千方百计要整死华为的各种做法,也反对美国利用舆论优势和影响力来抹黑、围堵中国的各种谎言和做法。但从美国发源的自由软件运动和开源软件运动,帮助我们建立了自己的计算机产业,尤其是芯片、电子产品、互联网、移动互联网等产业。要不然,华为根本不可能发展到今天这个地位,也不可能出现美国举国之力来打压华为的事情。这点上,我们应该虚心向美国学习。

从自主可控、安全可控到现在的信息创新,我们国家一直希望建立可以自主发展的信息产业。在芯片设计和制造领域,我们大概还有20年的差距,拿钱砸,可以缩短到10年左右。然而在软件领域,如果我们看上面那论文给出的人才上的差距,我认为这个差距还在扩大,而不是在缩小。从这个意义上讲,任正非先生说300年赶上美国也不是没有道理的。

但是,我并不认为在软件尤其是基础软件领域我们应该另起炉灶,因为基础软件的规模已经非常庞大,很多东西我们没有积累,也无法绕开。而且这条道路我们已经尝试过了。过去的二十年间,我们就是在“自主”的思想指导下去发展自己的操作系统以及其他核心软件,但说实话效果不佳,人才都没培养出来几个。

出现这个情况的原因,可以说出一堆,甚至可以总结到文化、基因方面,比如说中国人缺乏良好的逻辑思维训练、汉语的模糊表达方式不利于培养计算机式的缜密思维方式等等。但笔者认为,根子在于对知识产权的重视不够。比如笔者90年上大学的时候,看到好的软件,首先想到的就是买几张软盘拷贝一份,而不是想着去买一套正版的用。二十多年过去了,现在仍然有很多企业不愿意为软件掏钱,这导致搞基础软件难赚钱,赚不到钱就没人愿意投入,没人愿意投入,产业自然就发展不起来。这几年有了好转,企业开始重视软件的合规使用,但也仅限部分头部企业而已。

另外一个重要的趋势是,开源软件大行其道,任何一个基础软件,几乎都有开源的替代品,很多开源软件的背后有国际化的大企业在支持或赞助,开源软件逐渐形成了一种良性循环的开发模式和发展模式,很多开源软件的地位几乎无法撼动,如 Linux 内核。在这种历史趋势下,如果我们在基础软件领域,仍然强调狭隘的民族主义,仍然强调一切都自主,甚至想着“我们有的是人,大不了重写一遍”,将来一定会吃大亏。

这个亏主要来自,如此做法,你将失去国际化的自由软件、开源软件运动在过去二三十年来创造出的一个大型基础软件生态系统。而我们由于人才匮乏等各种原因,就算抄作业,也无法抄得过人家:君不见,国产自主二十年,黑发变白发,内核 Linux 啥变化?

正确的做法是拥抱这个生态,做到我中有你,你中有我。比如 Linux 内核,现在大量的代码来自英特尔、微软、谷歌等公司的贡献,国内华为等公司也有不少贡献。这就对了,当我们国内企业的贡献超过一定比例,来自中国的声音就不可能被忽略。

另外,我们搞基础软件,必须强调在已有基础上的创新。以操作系统为例,基础软件讲求的是软件栈:软件栈越堆越高,开发越来越简单是永恒的追求。通过复杂的软件来倒闭硬件的发展,产业就可以互动起来。如果一切从最基础的做起,那样等于要把别人走了二十年的老路重新走一遍。但我们国家目前搞芯片的也好,搞基础软件的也好,总想把成本降得低低的,让软件来满足各种各样硬件都满足不了的需求。这种做法是逆潮流的,是得不偿失的。

二十年来,我们从自主可控、安全可控到信息创新的说法变迁,准确地反应了获得这样一个认识是多么艰难的一件事儿。基础软件方面的投入是一个长期的过程,没有积累连问题在哪儿都找不到,更谈不上创新了。因此,如何创新这事儿,我估计还需要再花二十年的时间来摸索。

啰里啰嗦说了一堆,与诸位从业者共勉。

Edited
20 Bytes
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment