日前,中国工程院院士倪光南表示:目前,我国在部分网络和信息化核心技术领域技术储备依然薄弱,特别是终端操作系统技术短板明显。为适应快速发展的互联网环境和应对日趋严峻的网络安全形势,国产自主终端操作系统技术研发和产业发展仍需提速。 虽然以倪光南院士为代表的一批专家在十多年前就一直呼吁发展国产操作系统,但中国始终没能搞出一款源代码全部自己写的通用国产操作系统,开发国产通用操作系统难度何在? 编写操作系统工作量巨大 开发一个操作系统工作量非常大。举例来说,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、网游、页游的程序员,但假如让这些程序员去开发基础软件,他们很可能就抓瞎了。 另外,国内软件业的行业环境也加剧了高端技术人才匮乏的状况。 国外程序员一般情况下,做一辈子就做一方面的技术,在学习掌握该技术,下半辈子基本上就写程序了。 国内程序员因为企业经常跟着项目走,使国内程序员要会很多方面的技术,技能多而不精。此外,国内程序员有一个共识——就是不能写一辈子程序,必须向管理层转型,最后的目标就是做项目经理之类的职务。 转为管理层后,就不再从事一线开发或者很少从事一线开发。 这些现状使国内软件产业很难培养出技术精湛的程序员,培养磨砺出来的资深程序员却因为转向管理层不再或很少从事一线开放,进一步加剧了技术人才匮乏的现状。 研发单位人力资源不足 在人力资源方面,国内做操作系统的公司的开发人员,大一些的有三、五百人,小的甚至不足百人。一部分体制内单位存在人才流失问题。体制内很多人都是怀着理想和信念在奋斗,但理想信念不能当饭吃,赚取收入的时候"讲牺牲奉献",养家糊口的时候"讲市场规律",一般人都无法长期坚守。紧接着年纪的增长,家庭、生活压力越来越大,很难抵御跳槽后收入翻倍的诱惑。 |
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.