一直以来,国产操作系统都是网络上某些人攻击和非议的对象,力图用这个领域的例子来证明,中国科学技术水平和工程应用水平低下。
比如,最常用的一个例子是,虽然在军事、科研等特殊领域,国内不乏自己的操作系统,但在通用操作系统上,不要说寻常百姓的家用电脑,即使是很多党政机关和企事业单位,依旧在使用微软的Windows操作系统。
开发一个中国自己的通用操作系统,为什么这么难?到底难在哪里?
库叔告诉你,开发国产操作系统,要面对的是9座大山。
1、工作量巨大
开发一个操作系统工作量非常大。
最能直观体现这一工作量的指标,就是代码的行数。
举例来说,微软的Windows XP系统有4000万行代码,Windows Vista和Windows 7 则达到了5000万行;开源系统Linux这边,3.6版本的Linux内核代码有1590万行,而Linux的发行版Debian系统代码行数更是多达恐怖的6500万行。这还是经过软件厂商反复精简的结果。
几千万行代码的工作量是个什么概念?举个参照系吧,很多人在用的金山办公软件WPS代码行数约150万行,而金山软件公司重写这个级别的WPS,用了3年时间。
当然,操作系统代码行数并非越多越好,而是在保障相同功能的情况下,代码越精简越好,像塞班系统代码行数突破3500万行,却因代码臃肿,对代码的维护性和扩展性造成了负面影响。
所以,写完代码后,如何反复精简代码,保证系统功能的最优化,又是一个巨大的费时费力的工作。
2、需要深厚技术积累和持续迭代演进
开发操作系统最难的工作就是做一个自己的内核,而系统内核分成很多模块,每个模块的划分、协调不仅要考虑有效性、效率高低、可扩展性、可维护性,还要注重代码控制、算法效率、项目管理、多任务调度算法、软件架构设计等方面,是非常复杂的一项工作,技术门槛也比较高,需要有非常深厚的技术积累。
现在我们耳熟能详的操作系统,都是几十年技术积累和站在巨人肩膀上的产物,而非凭空冒出来的。
举例来说,手机上用的最多的谷歌安卓系统是基于Linux的二次开发,小清新奉为圭臬的苹果iOS则是基于FreeBSD/Unix的二次开发,Linux和iOS追根溯源都是Unix。
下图是各个操作系统的发展图谱,可以看出从最初的Unix,发展到后面各分支的操作系统,经历了一个多么错综复杂、一步步积累的过程。
当然,开发操作系统在技术上也并非绝对的高不可攀,相对于需要复杂的矩阵运算、高阶偏微分方程等比较高深的数学知识才能胜任开发的软件,比如和军用关系密切的地理信息系统软件以及一些图形处理软件,操作系统核心模块的开发技术门槛还是略低一些,有一定数据结构知识和硬件知识就可以胜任,并不需要复杂的数学推导和运算。
操作系统的开发周期长,而且是一个迭代演进的过程。
微软在1985年推出Windows1.0后,经过Windows2.0、Windows3.0、Windows3.1、Windows NT、Windows95、Windows98、Windows2000等操作系统演进迭代,才于2001年推出一代经典的操作系统Windows XP。
Linux、FreeBSD也是以Unix为基础,经过几十年的开发和更新,才发展到现今的水平,而谷歌和苹果以Linux、FreeBSD为基础,他们的操作系统也是一代代发展的。
因此,在缺课太多,差距过大的情况下,需要的是循序渐进和厚积薄发,试图在短时间内实现赶超,妄图一口吃成胖子的科技大跃进显然是不可能的。
3、国内软件产业既胖且虚
除了技术上的难题,开发国产操作系统还面临大量产业和行业性问题。比如中国软件产业整体大而不强的现实状况。
软件产业强大与否,并不是取决于该国程序员数量,更不取决于软件产业创造的GDP,而在于产业标准制定权以及是否拥有核心技术。
标准方面,人人都知道,一流企业做标准,二流企业做品牌,三流企业做产品,掌握了标准的制定权就能获取高额利润并立于不败之地。
而国内软件业从教学到产业,基本上跟着西方的技术标准走,没有自己的一套技术标准。像程序员常用的编程语言、编译器、软件开发工具,基本上用的都是国外产品。
软件产业大而不强的另一个表现就是产品缺乏核心技术。以我们每天都用的手机和浏览器来说,国内各家公司推出了不少浏览器,但基本上是国外浏览器的“马甲”,所谓的国产浏览器都没有国人自己编写的浏览器内核。
手机操作系统也是如此,虽然很多国产手机都有诸如Emtion、nubia之类的系统,但拨开现象看本质,这些还都是安卓操作系统的马甲,只能算是一个UI(系统界面)。
类似的例子还有很多,某家以杀毒软件起家的互联网公司,其杀毒软件的用的是罗马尼亚的BitDefender引擎;不少厂商隔三差五就会出现于媒体聚光灯下的云解决方案,其实上也是国外开源软件(Openstack/Xen)的马甲,有些厂商虽然也贡献了少量代码,但含金量远不及宣传中那么足。
在linux,KVM,Xen,OpenStack,HADOOP,Docker,Mysql,OpenJDK等基础软件的代码贡献量方面,中国庞大的程序员数量和中国相对有限的代码贡献量极不相称。
因此,虽然中国软件产业和互联网企业创造了海量的GDP,演绎了一批造富神话,吸纳了大批就业岗位,但依附于西方技术标准、没有自己编程语言和软件开发工具、应用软件强而基础软件弱已成为中国软件产业的内伤。
4、高端技术人才相对匮乏
“一流人才漂洋过海,二流人才北京上海”,虽然很多怀有理想的志士依旧留在国内做科研,但中国高端技术人才流失是不争的事实——中国早已成为美国最大的人才输出国。
在高端技术人才大批量流失的同时,国内大学和公司的人才培养却不尽如人意。
在标准制定上的缺失使中国软件业基本依附于西方的技术体系,国外巨头和中国各个大学堪称典范的“合作”关系下,使得我们大多数的学生只是在学习如何在西方搭好的技术框架下做“填空题”。
此外,中国软件产业还有相当大一部分程序员在从事外包服务,简单地说就是国外程序员不愿意做的,认为是简单重复劳动的低端工作,大多数都是中国的程序员在做。
一些久经磨砺的资深程序员虽然技术精湛,但在国家和国内软件巨头没有标准制定的顶层设计的情况下,单凭自己或小群体的力量无力制定标准,基本上是跟着国外技术体系走,国外出一个新技术、新标准,就一窝蜂去学。
至于构建自己的技术体系,这项技能基本沦为“屠龙之技”(国内基本用不到),大部分学校在教学上根本不重视,即使巧遇良师或自学成才,国内除军工企业、国防院校、科研院所之外,也很难有用武之地。
因此,中国程序员虽然数量庞大,其中更是不乏精英人才,但相当大一部分程序员技术水平有限。国内非常多做手机APP、网游、页游的程序员,你让他们在国外技术框架下写能在X86、ARM芯片上跑的APP、网游、页游程序,他们没问题。但你让他们脱离国外技术框架去给走自主路线的龙芯、申威开发软件,很可能就抓瞎了。
另外,国内软件业的行业环境也加剧了高端技术人才匮乏的状况。
国外程序员一般情况下,职业生涯只做一方面的技术,学习掌握该技术,下半辈子基本上就写程序了。
国内程序员因为企业经常跟着项目走,要会很多方面的技术,技能多而不精。此外,国内程序员普遍有一个共识——就是不能写一辈子程序,必须向管理层转型,最后的目标就是做项目经理之类的职务。转为管理层后,就不再从事或者很少从事一线开发。
这些现状使国内软件产业很难培养出技术精湛的程序员,培养磨砺出来的资深程序员却因为转向管理层不再或很少从事一线开放,进一步加剧了技术人才匮乏的现状。
5、操作系统领域人才捉襟见肘
软件产业整体的高端技术人才缺乏,再具体到操作系统领域,人力资源方面就更捉襟见肘了。
一般来说,国内操作系统公司的开发人员,大一些的有三、五百人,小的甚至不足百人。
体制内的科研院所、国防院校、军工企业中确实有很多人才,而且都是中国高考体制下层层选拔脱颖而出的佼佼者,技术能力很强,但各自的科研任务负担都非常重,国防和信息安全任务已经把他们压的喘不过气来,根本没有多余的精力去解决民用方面的技术问题。
此外,有一部分体制内单位还存在人才流失问题。体制内很多人都是怀着理想和信念在奋斗,但随着年纪的增长,家庭、生活压力越来越大,很难抵御跳槽后收入翻倍的诱惑。
形成鲜明对比的是微软,一个公司就有将近10万员工,当年有Windows95、Windows98等系统的技术积累的情况下,依旧集中了5000余名程序员开发Windows XP。
Linux虽然不靠任何一个商业公司支持,但是由于目前已经被广泛应用和认可,不但已经得到全世界程序员共同维护,红帽公司、英特尔、IBM、甲骨文、微软等国际巨头也积极参与其中,同样具备很强的持续研发能力。
6、研发资金相对不足
在资金方面,一个成熟的操作系统的开发往往延续数年,比如微软在2014年的研发成本超过100亿美元,在开发Windows Vista所花费的研发费用更是超过了200亿美元。Linux内核开发根据人员投入的规模测算,也耗资数十亿美元。
而与Windows Vista、Fedora9大约处于同一历史时期的国产银河麒麟操作系统,其在内核方面的自主技术的比例算是比较高了,但研发经费也仅为4000万人民币,当时的汇率还是1美元等值8元人民币。
由国防科大领衔研制银河麒麟,经费尚且如此窘迫,国内其他小公司的经费支持就可想而知了。
更糟糕的是,在与国外巨头人力和财力资源差距如同鸿沟的状况下,国内各家研发操作系统的公司依旧在各自为战,技术路线并不统一。
目前,国内有10多家做操作系统的公司,但每家公司各有各的打算,始终无法形成产业联盟。虽然基本上都是基于Linux的二次开发,但有的是走红帽技术路线,有的走Debian技术路线。这使得人力资源和财力资源原本就非常有限的情况下,研发力量被进一步分散削弱了。
7、趋利避害使企业避重就轻
对于企业而言,市场经济时代商业利益至上,对于国内某些商业巨头而言,承担社会责任,做一个独立自主、安全可控的操作系统并不是他们追求的目标。
因此,国内巨头有做HMOS金融系统的动力,因为在给场外配资的金融游戏中,HMOS简直就是印钞机。
此外,在技术层面上,自主技术越多,那么和现有的软件体系兼容性就越差;反之,兼容性就越好。在以市场化运营为导向的标准下,自然要能兼容现有的软件体系。那么,这样的操作系统就自然不可能有太多自己的东西。
举例来说,国内除体制内单位外,软件技术实力最强的就要属BAT等互联网巨头以及华为、中兴、东软等厂商了。
虽然华为和中兴居2014年中国软件收入排行榜第一和第二位,但技术长于通信领域,开发通用操作系统非其所长,在商业利益的驱使下,华为和中兴手机的操作系统其实就是一个基于安卓的UI。
BAT等互联网巨头推出的操作系统,则主要是为了跑马圈地,抢端口,赚快钱,而不是为了实现信息安全和自主可控,自然不可能选择长周期、高投入、高技术门槛的自主研发之路,基于安卓的二次开发就成为理所当然的选择,编写的代码仅限于重写了虚拟机。
商业上的趋利避害还加剧了国内应用软件强,而基础软件弱的现状,比如中国写Java的程序员有上百万人,写JavaScript的程序员也有上百万人,写QT的也很多,但Java虚拟机、JavaScript引擎、QT库却没多少人干。
8、有系统无应用,软件生态难构筑
单单有一个操作系统而没有软件生态是没有意义的。
操作系统仅仅是一个平台,丰富的软件生态才是操作系统的活力之源。
什么是软件生态呢?比如即时通信软件、网络支付软件、浏览器、Office办公软件、Flash、各种游戏等等。没有这些软件,用户就无法网络聊天、上网、办公、看视频、玩游戏,只能对着“我的电脑”桌面图标发呆。
软件生态的构建需要软件厂商的配合,而软件厂商不是“活雷锋”,只有当某个操作系统市场占有率达到一定程度时,软件厂商才会帮忙适配软件,这样就形成了一个悖论——软件生态贫乏,导致操作系统用户数量很少,而市场占有率小的情况下,软件厂商不会主动帮忙适配软件。
以微软这个桌面操作系统霸主为例,因为Windows系统手机的市场份额非常小,导致国内外软件厂商大多不愿意给它开发手机APP,而软件方面的不足又使更多的用户抛弃Windows手机。
微软的财力和技术不可谓不雄厚,但因错过发展机遇期,要在别人已经占据的市场分一杯羹,也是艰难无比。
因此,要构建自己的软件生态,最好是在无人涉足的新领域,比如当年谷歌和苹果涉足的智能手机领域,或者现在正兴起的物联网领域。
要在已经被外商占据的领域,发展出自己的软件生态,就只有花钱请软件厂商来帮忙了,而资金和人才恰恰是国内厂商的两大短板,根本没有财力去这样烧钱。这无异于陷入一个死循环。
9、市场推广难度大
即使是有了成熟的操作系统和一定软件生态的积累,要市场推广依旧不容易。主要有以下几个难点:
1、用户粘性制约市场推广。操作系统有一种属性——用户粘性,当用户习惯了某一个操作系统后,让用户换一种操作系统,甚至同一个操作系统换一个版本都会产生诸多的不方便。
举例来说,从Windows XP升级到Windows 7,很多原本习以为常的操作全部改变了,都要从新学起,很多人就觉得很麻烦,这也是为什么微软已经发展到Windows 10了,Windows XP在中国依旧有庞大的市场占有率。
2、更换平台成本大。有一定历史的公司和单位都积累了大量的数据和资料和应用系统,这些数据和资料和应用转移到新的平台,不仅需要花费不菲的金钱,还有一定的技术风险——是否会造成数据和资料的损毁和丢失,这是谁都不敢打包票的事情。
3、预装国产操作系统的计算机无法被用户接受。因为Windows在桌面市场的霸主地位,像联想这样的PC整机制造商基本上预装Windows系统,即使某些厂商预装了国产操作系统,但在销售过程中,零售商往往将预装国产操作系统的电脑安装盗版Windows系统出售。
4、盗版猖獗。其实国产操作系统最大的对手不是微软,而是盗版。盗版猖獗的情况下,哪怕国产操作系统免费使用,在市场中也很难推广出去。
形成鲜明对比的是金山软件的WPS,在国内曾经被盗版软件杀得溃不成军,但在知识产权保护较好的日本,金山以低于微软Office软件的售价,与微软的Office软件相当的功能,不仅占据了一定市场份额,还实现了盈利。
「 支持!」
您的打赏将用于网站日常运行与维护。
帮助我们办好网站,宣传红色文化!