日前,中国工程院院士倪光南表示:目前,我国在部分网络和信息化核心技术领域技术储备依然薄弱,特别是终端操作系统技术短板明显。为适应快速发展的互联网环境和应对日趋严峻的网络安全形势,国产自主终端操作系统技术研发和产业发展仍需提速。
虽然以倪光南院士为代表的一批专家在十多年前就一直呼吁发展国产操作系统,但中国始终没能搞出一款源代码全部自己写的通用国产操作系统,开发国产通用操作系统难度何在?
编写操作系统工作量巨大
开发一个操作系统工作量非常大。举例来说,Windows XP 有代码4000万行,Windows Vista 代码达5000万行,Windows 7 有代码5000万行,3.6版本的Linux 内核代码就有1590万行,而linux的发行版Debian系统代码行数达6500万行,而且这些代码还都是经过软件厂商反复精简的结果。
操作系统代码行数并非越多越好,而是在保障相同的功能的情况下,代码越精简越好,像微软的IE浏览器代码超过1000万行,塞班系统代码行数突破3500万行,却因代码臃肿,对代码的维护性和扩展性造成了负面影响。
编写操作系统需要深厚技术积累
操作系统的最难的就是做一个自己的内核,而系统内核分成很多模块,每个模块的划分、协调不仅要考虑有效性、效率高低、可扩展性、可维护性,还要注重代码控制、算法效率、项目管理、多任务调度算法、软件架构设计等方面,是非常复杂的一项工作,技术门槛也比较高,需要有非常深厚的技术积累。
现在大家耳熟能详的操作系统,都是几十年技术积累和站在巨人肩膀上的产物,而非凭空冒出来的。举例来说,手机上用的最多的安卓系统是基于Linux的二次开发,小清新奉为圭臬的IOS是基于FreeBSD/Unix的二次开发,Linux和IOS追根溯源都是Unix,下图为各个操作系统的发展图谱。
开发操作系统是一个迭代演进的过程
操作系统的开发周期长,而且是一个迭代演进的过程。微软在1985年推出Windows1.0后,经过Windows2.0、Windows3.0、Windows3.1、Windows NT、Windows95、Windows98、Windows2000等操作系统演进迭代,才于2001年推出一代经典Windows XP。
Linux、FreeBSD也是以UNIX为基础,经过几十年的开发和更新,才发展到现今的水平,而谷歌和苹果以Linux、FreeBSD为基础,他们的操作系统也是一代代发展的。
因此,在缺课太多,差距过大的情况下,需要的是循序渐进和厚积薄发,试图在短时间内实现赶超,妄图一口吃成胖子的科技大跃进显然不可取。
软件产业大而不强
软件产业强大与否,并不是取决于该国程序员数量,更不取决于软件产业创造的GDP,而在于产业标准制定权与是否拥有核心技术。
一流企业做标准,二流企业做品牌,三流企业做产品,掌握了标准的制定权就能获取高额利润并立于不败之地。而国内软件业从教学到产业基本上跟着西方的技术标准走,没有自己的一套技术标准。
像程序员常用的编程语言、编译器、软件开发工具基本上用的都是国外产品。
软件产业大而不强的另一个表现就是产品缺乏核心技术。以大家每天都用的手机和浏览器来说,国内各家公司推出了不少浏览器,但基本上是国外浏览器的马甲,所谓的国产浏览器都没有国人自己编写的浏览器内核;虽然很多国产手机都有诸如Emtion、nubia之类的系统,但拨开现象看本质这些还是安卓操作系统的马甲,只能算是一个UI。
不少厂商隔三差五就会出现于媒体聚光灯下的云解决方案,其实上也是国外开源软件的马甲,有些厂商虽然也贡献了少量代码,但含金量远不及宣传中那么足......
在linux,KVM,Xen,OpenStack,HADOOP,Docker,Mysql,OpenJDK等基础软件的代码贡献量方面,中国庞大的程序员数量和中国相对有限的代码贡献量极不相称。
因此,虽然中国软件产业和互联网企业创造了海量的GDP,演绎了一批造富神话,吸纳了大批就业岗位,但依附于西方技术标准、没有自己编程语言和软件开发工具、应用软件强而基础软件弱已成为中国软件产业的内伤。
技术人才相对匮乏
"一流人才漂洋过海,二流人才北京上海",虽然很多怀有理想的志士依旧留在国内做科研,但中国高端技术人才流失是不争的事实——中国早已成为美国最大的人才输出国。
在高端技术人才大批量流失的同时,国内大学和公司的人才培养却不尽如人意。
在标准制定上的缺失使中国的软件业基本依附于西方的技术体系,国外巨头和中国各个大学堪称典范的"合作"关系下,使得我们大多数的学生只学习在西方搭好的技术框架下做"填空题"。
一些久经磨砺的资深程序员虽然技术精湛,但在国家和国内软件巨头没有标准制定顶层设计的情况下,单凭自己或小群体的力量无力制定标准,基本上是跟着国外技术体系走,国外出一个新技术、新标准,就一窝蜂去学。
中国程序员虽然数量庞大,其中更是不乏精英人才,但相当大一部分程序员技术水平有限。具体来说,国内IT企业极少参加系统相关标准制定,国内软件人才很少向国际开源社区贡献源码;国内有非常多做手机APP、网游、页游的程序员,但如果让这些程序员去开发基础软件,他们很可能就抓瞎了。
另外,国内软件业的行业环境也加剧了高端技术人才匮乏的状况。
国外程序员一般情况下,做一辈子就做一方面的技术,在学习掌握该技术,下半辈子基本上就写程序了。
国内程序员因为企业经常跟着项目走,使国内程序员要会很多方面的技术,技能多而不精。此外,国内程序员有一个共识——就是不能写一辈子程序,必须向管理层转型,最后的目标就是做项目经理之类的职务。
转为管理层后,就不再从事一线开发或者很少从事一线开发。
这些现状使国内软件产业很难培养出技术精湛的程序员,培养磨砺出来的资深程序员却因为转向管理层不再或很少从事一线开放,进一步加剧了技术人才匮乏的现状。
研发单位人力资源不足
在人力资源方面,国内做操作系统的公司的开发人员,大一些的有三、五百人,小的甚至不足百人。一部分体制内单位存在人才流失问题。体制内很多人都是怀着理想和信念在奋斗,但理想信念不能当饭吃,赚取收入的时候"讲牺牲奉献",养家糊口的时候"讲市场规律",一般人都无法长期坚守。随着年纪的增长,家庭、生活压力越来越大,很难抵御跳槽后收入翻倍的诱惑。
形成鲜明对比的是微软公司,该公司有将近10万员工,当年在有Windows95、Windows98等技术积累的情况下,依旧集中了5000余名程序员开发Windows XP。
Linux虽然不靠任何一个商业公司支持,但是由于目前已经被广泛应用和认可,不但已经得到全世界程序员共同维护,红帽公司、Intel、IBM、甲骨文、微软等国际巨头也积极参与其中,同样具备很强的持续研发能力。
研发资金相对不足
在资金方面,微软在2014年的研发成本就超过100亿美元。而一个成熟的操作系统的开发更是延续数年,微软在开发Vista所花费的研发费用超过了200亿美元,Linux仅内核据如果根据人员投入的规模,据测算也耗资数十亿美元。
形成鲜明对比的是和Vista、Fedora 9大约处于同一历史时期的银河麒麟操作系统。其研发经费仅仅为4000万人民币,而且当时的汇率还是1美元等值于8元人民币。
由国家队研制银河麒麟经费尚且如此窘迫,国内其他小公司的经费支持就可想而知了。
在国外巨头人力和财力资源差距如同鸿沟的状况下,国内各家研发操作系统的公司依旧在各自为战,而且技术路线不一。具体来说,国内有十多家在做操作系统的公司,但每家公司各有各的小算盘,始终无法形成产业联盟。虽然基本上都是基于Linux的二次开发,但有的是走红帽技术路线,有的走Debian技术路线。还有的选择和微软搞合资,搞所谓的Win10中国政府特供版,这使得人力资源和财力资源原本就非常有限的情况下,研发力量被进一步分散削弱了。
趋利避害使大多企业无心研发自主操作系统
市场经济时代商业利益至上,对于国内商业巨头而言,承担社会责任,做一个独立自主、安全可控的操作系统从来不是他们追求的目标,他们的目标仅仅是利润!
因此,国内巨头有做HMOS的动力,因为给场外配置的金融游戏中,HMOS简直就是印钞机。但在开发国产操作存在技术人才不足、技术门槛高、成本巨大、研发周期长、软件生态构筑难、市场推广难等困境之时,显然不会有开发一个拥有国产内核的操作系统的动力。
满怀理想的开发开发者会被残酷的现实撞得头波血流——抱着开发能代表中国技术水平己开源操作系统理想的一家操作系统一直处于不盈利状态,以至于当地税务部门曾经认为该公司长期都是研发投入而无产出的情况不正常,还专门进行过检查。
在技术层面上,自主技术越多,那么和现有的软件体系兼容性就越差;反之,兼容性就越好。在以市场化运营为导向的标准下,自然要能兼容现有的软件体系。那么,这样的操作系统就自然不可能有太多自己的东西。
举例来说,国内除体制内单位外,软件技术实力最强的就要属互联网巨头和华为、中兴、东软等厂商了。
虽然华为和中兴居2014年中国软件收入排行榜第一和第二位,但技术长于通信领域,开发通用操作系统非其所长,在商业利益的驱使下,华为和中兴手机的操作系统其实就是一个基于安卓的UI。
互联网巨头推出的操作系统更是将利润至上发挥的淋漓尽致——为了跑马圈地,抢端口,赚快钱,而不是为了实现信息安全和自主可控,自然不可能选择长周期、高投入、高技术门槛的自主研发之路,基于安卓的二次开发就成为理所当然的选择,编写的代码仅限于重写了虚拟机。商业上的趋利避害加剧了国内应用软件强,而基础软件弱的现状,比如中国写Java的程序员有上百万人,写JavaScript的程序员也有上百万人,写QT的也很多,但Java虚拟机、JavaScript引擎、QT库却没多少人干。
软件生态难以构筑
单单有一个操作系统而没有软件生态是没有意义的。操作系统仅仅是一个平台,丰富软件生态才是操作系统的活力之源。什么是软件生态呢?比如即时通信软件、网络支付软件、浏览器、Office办公软件、Flash、各种游戏等等。没有这些软件,用户就无法网络聊天、上网、办公、看视频、玩游戏,只能对着"我的电脑"桌面图标发呆。
软件生态的构建需要软件厂商的配合,而软件厂商不是活雷锋,只有当某个操作系统市场占有率达到一定程度时,软件厂商才会帮忙适配软件,这样就形成了一个悖论——软件生态贫乏,导致操作系统用户数量很少,而市场占有率小的情况下,软件厂商不会主动帮忙适配软件。
就以微软这个桌面操作系统霸主来说,因为WindowsPhone的市场份额非常小,导致国内外软件厂商大多不愿意给它开发手机APP,而软件方面的不足又使更多的用户抛弃WindowsPhone。微软的财力和技术不可谓不雄厚,但因错过发展机遇期,要在别人已经占据的市场分一杯羹,也是艰难无比。
因此,要构建自己的软件生态,最好是在无人涉足的新领域,比如当年谷歌和苹果涉足的智能手机领域,或者现在正兴起的物联网领域。
要在已经被外商占据的领域,发展出自己的软件生态,就只有花钱请软件厂商来帮忙了,而资金和人才恰恰是国内厂商的两大短板,根本没有财力去这样烧钱。
市场推广难度大
即使是有了成熟的操作系统和一定软件生态的积累,要市场推广依旧不容易。主要有以下几个难点:
用户粘性制约市场推广。操作系统有一种属性——用户粘性,当用户习惯了某一个操作系统后,让用户换一种操作系统,甚至同一个操作系统换一个版本都会产生诸多的不方便。举例来说,从WindowsXP升级到Windows7,很多原本习以为常的操作全部改变了,都要从新学起,很多人就觉得很麻烦,这也是为为什么微软已经发展到Windows10了,WindowsXP在中国依旧有庞大的市场占有率。
更换平台成本大。有一定历史的公司和单位都积累了大量的数据和资料和应用系统,这些数据和资料和应用转移到新的平台,不仅需要花费不菲的金钱,还有一定的技术风险——是否会造成数据和资料的损毁和丢失,这是谁都不敢打包票的事情。
预装国产操作系统的计算机无法被用户接受。因为Windows在桌面市场的霸主地位,像联想这样的PC整机制造商基本上预装Windows系统,即使某些厂商预装了国产操作系统,但在销售过程中,零售商往往将预装国产操作系统的电脑安装盗版Windows系统出售。
买办作祟。过去几十年的实践证明:凡是中国暂时没有掌握的技术,西方基本上是高度封锁的,但凡中国刚刚在某些领域取得一定突破和起色,西方就会一反过去高度技术封锁的做法,选择到中国大陆来大搞合资,比如中国搞出了运10,麦道就来合资了。把运10废了之后,再去找波音、空客合资,外商开出的条件异常苛刻,压根懒得理你。在CPU上也是类似,随着自主CPU取得的长足进步,Intel、IBM、ARM、高通等外商都来中国大陆合资或开展技术合作。而这些合资公司往往充当了皇协军的角色,扼杀自主技术的成长。