你好,我是海纳。
送君千里,终有一别,我们的专栏到这里就结束了。我希望这个专栏对你来说不是一个终点,而是让你学习基础软件的起点。
这个专栏虽然不可能让你通过短短的十五万字和一百来幅图,就搞明白操作系统、CPU和编译器的每一个细节。但我觉得它仍然可以帮你建立起一个大的框架,让你对计算机内存的各种工作原理有一个全面的认识。今天,我想以一种既轻松又严肃的心情,和你聊聊自主基础软件开发的那片星辰大海。
不知道你有没有听说过“程序员的三大浪漫”?有的人说这三大浪漫是指基础软件中的操作系统、编译器和数据库技术;当然也有人觉得三大浪漫是指操作系统、编译器和图形学。我个人觉得这四门学科不管是在过去、现在,还是未来,都会是计算机工业的基石。
十五年前流行的ASP、JSP技术已经被扫入历史的垃圾堆里,十年前的Struts、Hibernate也逐渐销声匿迹。一代代的应用技术就是这样不断崛起、不断消亡,但是基础软件领域却一直保持着自己的节奏正常演进。
有同学问我,下一个十年的热点技术会是什么?我说我不知道,也许是物联网?也许是增强现实、虚拟现实?甚至也可能是区块链加元宇宙,或者是单人轨道交通和自动驾驶?这些我都无从得知。
虽然我不能给你一个确定的答案,但我知道,对操作系统来说,未来硬件无论怎么变革,对硬件进行管理和抽象、为软件提供合适的底座的诉求永远不会消失;对编译器来说,人们对新的编程语言和编程范式的追求一定不会消失;对数据库来说,数据量在未来一定会越来越大,所以高效处理数据的需求也永远不会消失;而对于图形学来说,创造更加方便的人机交互方式和更加逼真的虚拟世界,这个追求也肯定不会消失。
这四门技术可以说是含金量很高的了,但在2010年以前,在国内做这四个方向是很难找到工作的,只有Intel、AMD、IBM等外企才会提供为数不多的工作岗位,国内只能看到零星的一些企业还在坚持走国产基础软件的道路。可想而知,当时的市场环境有多艰难。企业不赚钱,程序员的待遇当然也不会高,“三大浪漫害死人”的说法就是这一段时间兴起的。
不过,让人意想不到的是,接下来的十年,数据库技术爆发了。在这一段时间里,我们看到了阿里OceanBase、腾讯TDSQL和华为GuassDB等ICT企业大力投入到数据库领域,由此带来的技术成果也支撑了各自企业的业务飞速发展,数据库相关从业人员的个人发展也赢来了巨大的转机。
你可能会想,为什么其他三个领域就没有爆发呢?我想从三个方面来谈一下个人的看法,这三个方面分别是生态、平台和技术竞争力。而且,我觉得这三个方面不光可以总结基础软件的产业形态,还可以帮你对未来的技术方向做一个基本的判断。
我们就先从生态开始聊起吧。
软件生态就像一个自然界真实的生态系统一样,它由各种各样的角色组成,角色之间有能量流动和物质流动。以Android生态为例,在这个生态里有芯片设计者、芯片制造商;有操作系统开发者(比如说Google);也有像微信、支付宝这样的应用开发商;此外还有消费者。这里的消费者还可以进一步细分为手机购买者和应用使用者,不同的用户,他们的需求可能并不完全重叠。
当移动互联网刚刚兴起之时,其实并不是Android一统天下,当时还有塞班、Windows,甚至黑莓和三星的自研系统也占据了一席之地。当时不管哪一家都很难称得上是生态。大浪淘沙,慢慢地,其他的OS都掉队了。最后除苹果之外,只剩下Android一家独大了。怎么回事呢?
因为消费者逐渐发现Android手机比其他手机更好用,于是购买Android手机的人越来越多。开发者发现Android手机的市占率最高,都纷纷为它开发应用,Android手机的功能由此完善起来,消费者的购买力也逐步上升。这就是生态系统的正循环。
一旦一个系统进入正循环,其他系统就很难再去抗衡了。因为对于应用开发者而言,他们会有很强的动力要求开发平台归一。只针对一个系统进行开发,无疑会极大地降低开发者的成本。
在PC市场也是一样的道理。二十年前就有很多人喊着要用国产系统干掉Windows,实际上根本不可行。一个新的OS,如果没有配套的Office、浏览器,各种音乐软件和流行的游戏也与它不兼容,试问有多少人愿意使用它呢?
我举的这两个例子,是想让你体会什么是生态的威力。对于我们个人而言,做事情一定要顺应生态成长的趋势,不要逆势而行。
当然,这里面也有不一样的声音,一些人会问我:“海纳,照你这个说法,我们国内企业都没有机会了?”当然不是这样,中国经过了长期的发展,在操作系统、编程语言和编译器领域都有了不错的积累。当下一次硬件平台发生革命性变化的时候,中国的基础软件领域就能实现弯道超车。
接下来,我再来谈谈我对另外一个方面“平台”的看法。
我们这一代人经历了两种平台,分别是个人电脑和移动端。在这两个平台各自的发展时期都诞生了一些伟大的公司,流传着可歌可泣的事迹。但最激动人心、最波澜壮阔的场景还是发生在平台切换期间,也就是2010~2015这一段时间。这时候的新思想、新技术都层出不穷。
例如虚拟DOM的思想彻底变革了移动平台前端的开发逻辑,React、Vue,乃至Flutter都能看到虚拟DOM的影响;Swift、Dart中采用的声明式UI为移动端开发提供了更多选择;移动终端的暴发也催生了微服务、容器化、边缘计算等新的服务形态,服务端从IaaS、PaaS到FaaS,开发者的心智负担越来越轻,开发效率越来越高……这样的例子还有很多,我就不再列举了。
不过有点遗憾的是,这一次移动互联网的变革并不是由中国人引领的,所以在操作系统、编程语言等领域,我们并没有拿到最大的那块蛋糕。但好的一方面是,在移动互联网时代,国内与国外的技术差距在肉眼可见地缩小。
未来,人们对信息处理的便捷性和对各行业信息化的要求还会更高。在交通、家居、制造、物流、运输和能源等领域都会出现更多的数据处理和自动化调度运维,甚至是出现人工智能的辅助。
这些需求会极大地促进计算平台的迁移。而这一次迁移将是中国基础软件行业千载难逢的机遇。我不知道未来的计算平台是车载,还是家居,或者是工业机器人,但我知道,风一定会来。
作为一个普通人,在风起之前最应该做的事情是,把自己的翅膀锻炼好,而不是去猜风来的方向。现在互联网周期逐渐见顶,行业增长明显放缓,不少企业都表示凛冬将至。但我不这样看,毕竟春天都是从寒冬中孕育。当前正是有抱负的程序员们逆周期加强学习的时机。
如果你选择相信,你就能看见,只有将个人命运与国家民族的命运绑定在一起,形成共振,才能最大限度地实现自我价值。而中国的科技突破已经处于黎明之前,这是一种无可置疑的必然。
那么,当我们在做选择的时候,还是选择有益于生态的方向,不能与生态对抗;要抓住平台切换的机遇,这是弯道超车的机会;还要考虑一个行业在技术上是否已经到顶。
一个行业是否有前途,要看它是否有可能在未来做出更有竞争力的产品。这个道理被很多人忽略了。比如飞机制造业,虽然空客和波音的技术水平很高,但飞机制造却是一个实打实的夕阳产业。因为后来者很难在技术上对它们进行反超。在大型客机这个领域,需求已经到顶了,速度更快的客机早就出现了,但综合舒适度和经济性,现在时速800公里的客机就是最好的。所以这个行业就成为了夕阳产业。
正是基于这样的判断,我认为“三大浪漫”还有很大的空间,上面提到的四门学科离天花板还有很远,也就是说从技术上超越现有技术的可能性还非常大。它们都是大有希望的朝阳产业,所以技术竞争力是要考虑的第三个方面。
实事求是地说,科学技术的竞争,归根到底还是人才的竞争。在计算机领域,我们看到了超级程序员所起到的作用,比如Linus、Chris Lattner、James Gosling等天才程序员,他们创造的丰功伟绩让后来者不断赞叹。
中国的程序员虽然号称有百万之众,但是真正有影响力的天才程序员还是屈指可数。一方面是我们起步晚,技术积累不足,另一方面是国内的计算机教育太落后。在基础软件领域,我们即使有好的idea,也经常因为人的能力不足而无法实现。
国内外计算机教育的差距到底有多大呢?Berkeley的本科毕业生在上世纪70年代,就能在本科设计中做出PostgreSQL这种级别的作品,而我们的本科生有很多连图的深度优先遍历都未必能正确完整地写下来。而且我们国内的教材和PPT几十年也不更新,现在有很多高校在讲汇编的时候还在使用实模式汇编,讲计算机原理时还在使用8259A讲解中断。
每次和一些朋友聊起这个现状的时候,我们都感到深深的忧虑,这也就促使我想把学校里过时的知识指出来,让你少走弯路,同时把学校里没讲到的最有价值、最有用的东西分享给你。所以,未来我肯定还会坚持写作,以不同的形式呈现给你。我坚信,学习计算机知识没有捷径,但却有一条正确的路。
在专栏的更新过程中,我看到有不少同学说课程学起来很难、很枯燥,但我还是固执地用这样的风格完成了这个专栏。因为内存知识是我们学习操作系统的基本功,一旦基本功学通了,那之后学习各种计算机底层的软硬件知识就很容易。这样的课注定不会比速成课招人喜欢,但我认为从长期来看,它反而更实用。
中国的程序员并不少,但是高级程序员还远远不够。相比起现在的世界第一美国,我们的人才培养还有很长的路要走。就像我开头说的,希望你不要把这个专栏当做一个终点,而是要去探索基础软件的那片星辰大海,希望你成为我国信息技术的核心骨干,甚至是世界一流的超级程序员,希望你承载着我们这一辈的梦想继续前行……
“天不老,情难绝,心似双丝网,中有千千结”,这是我在学生时代写在日记本上的一句话,此刻这句话不断地浮现在我的心上,虽然很不想说再见,但我也只能暂时陪你到这了。真心地希望这一段旅程、这一个专栏能让你感受到成长,能帮助你到达一个新的阶段。
我知道很多同学都喜欢默默地学习,当一个“潜水党”,在专栏结束的今天,我希望能听到你的声音,听到你学习这门课的收获。最后,谢谢你看到这,我想对你说,为了世界第一的梦想,朋友们,我们江湖再见!
评论