主题 : 9座大山压着 国产操作系统“恨铁不成钢”
千山同一月 万户尽皆春 千江有水千江月 万里无云万里天
级别: 总版主

UID: 998
精华: 0
发帖: 605034
威望: 529344 点
无痕币: 3 WHB
贡献值: 0 点
在线时间: 62244(时)
注册时间: 2008-12-25
最后登录: 2024-04-30

0 9座大山压着 国产操作系统“恨铁不成钢”

很多人都对国产操作系统“恨铁不成钢”,但开发一个成功的国产操作系统,真没有想象中容易。
文︱瞭望智库特约科技观察员铁流
本文为瞭望智库原创文章,转载请标明出处及作者
一直以来,国产操作系统都是网络上某些人攻击和非议的对象,力图用这个领域的例子来证明,中国科学技术水平和工程应用水平低下。
比如,最常用的一个例子是,虽然在军事、科研等特殊领域,国内不乏自己的操作系统,但在通用操作系统上,不要说寻常百姓的家用电脑,即使是很多党政机关和企事业单位,依旧在使用微软的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、网游、页游程序,他们没问题。但你让他们脱离国外技术框架去给走自主路线的龙芯、申威开发软件,很可能就抓瞎了。
另外,国内软件业的行业环境也加剧了高端技术人才匮乏的状况。
国外程序员一般情况下,职业生涯只做一方面的技术,学习掌握该技术,下半辈子基本上就写程序了。
国内程序员因为企业经常跟着项目走,要会很多方面的技术,技能多而不精。此外,国内程序员普遍有一个共识——就是不能写一辈子程序,必须向管理层转型,最后的目标就是做项目经理之类的职务。转为管理层后,就不再从事或者很少从事一线开发。
这些现状使国内软件产业很难培养出技术精湛的程序员,培养磨砺出来的资深程序员却因为转向管理层不再或很少从事一线开放,进一步加剧了技术人才匮乏的现状。
级别: 六行秋雁

UID: 46151
精华: 0
发帖: 3045
威望: 23563 点
无痕币: 42069 WHB
贡献值: 0 点
在线时间: 938(时)
注册时间: 2008-07-19
最后登录: 2018-05-16

朝鲜人能用自己国产OS。中国毛主席要是在,号召一下,中国的OS不会是这个样子啦。
Total 0.037770(s) query 5, Time now is:04-30 19:15, Gzip enabled 粤ICP备07514325号-1
Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛