查看原文
其他

谷歌“断供”华为!中国真写不出操作系统?

51CTO 51CTO技术栈 2019-06-06

前几天美国停止了向华为供应芯片的事情,让大家猝不及防,好在华为在之前就做出了应对策略,用自己的备胎芯片度过这个难关。就在刚刚,谷歌宣布暂停对华为手机服务!



据路透社 20 日凌晨报道,在华为进入特普朗政府的黑名单后,Google 已暂停和华为的部分业务来往。

据路透社报道:“华为只能使用安卓系统的公共版本,但不能从谷歌获得专有应用程序和服务的访问。”

具体来说,华为除了可以使用“开放源码许可”公开可用的服务以外,将失去对谷歌安卓操作系统更新的访问权。


随后,The Verge 证实了谷歌与华为暂停业务的消息。谷歌发言人称:“我们只是遵守命令和审查其影响”。

华为海外市场的新一代智能手机将无法访问谷歌热门应用与服务,包括Google Play、Gmail、谷歌地图等,连YouTube都访问不了。


对于海外用户尤其是欧洲使用者来说,手机秒变砖,手机业务将受到巨大冲击。对于一些特定服务的具体细节,谷歌仍在进行内部讨论。


除此之外,谷歌还将停止提供所有应用软件的未来服务的技术支持和合作。The Verge 报道,华为手机目前只能使用 Android 开源项目(AOSP), 海外用户也只有在 AOSP 可用后才能完成安卓系统的更新。


目前,能够进入 Goolge Play Store 的华为手机用户依然可以下载谷歌提供的软件更新。只是没有谷歌,新一代的华为手机恐怕很难在海外销售了。


任正非回应美国禁令:半导体不卖给我们也没有关系


5 月 15 日,美国总统特朗普签署行政命令,要求美国进入紧急状态。在此紧急状态下,美国企业不得使用对国家安全构成风险的企业所生产的电信设备。这是在为禁止美企与华为的业务往来铺平道路。

面对美国的禁令,5 月 17 日凌晨,华为海思总裁何庭波发布了这封内部信。在这封《致员工的一封信》中,她表示,为了兑现公司对于客户持续服务的承诺,华为保密柜里的备胎芯片“全部转正”,是历史的选择。


另外,信中强调“华为立志,将数字世界带给每个人、每个家庭、每个组织,构建万物互联的智能世界。今后,为实现这一理想, 不仅要保持开放创新,更要实现科技自立!”

华为公共及政府事务部发布在华为 “心声社区” 上的《日本经济新闻》的报道


华为创始人兼总裁任正非在 18 日接受了日本媒体的采访,在采访中,他表示:“美国接二连三的威胁贸易伙伴的政策让企业不敢再冒险,同时这个国家也将失去信誉。”任正非表示,华为公司将继续开发自己的芯片,减少生产禁令带来的影响。他还说,即使高通和其他美国供应商不向华为出售芯片,华为也“没问题”,因为“我们已经为此做好了准备”。


任正非的回应印证了何庭波的那封信,华为时刻做着科技自立的准备。也就是说美国禁止华为业务的影响将是有限的,在长期看来,华为能够保持信心。


为了防止美国科技巨头不再向其授权现有系统,其实在今年的三月份,据香港《南华早报》报道,华为消费者业务 CEO 余承东表示,该公司已经为智能手机和电脑开发了自己的操作系统。


华为自研操作系统的消息,类似和 17 日华为海思总裁在内部公开信中透露的硬件备胎计划。

比较值得注意的是,最近华为推出了“方舟编译器”,华为称,通过架构级优化能够大幅度提升安卓手机的性能。


方舟编译器可让手机流畅度提高 24%,系统相应速度提升 44%,第三方重新编译后可让流畅度提升 60%,这应该是近期华为向手机系统发出挑战了的信号。


其实华为这样做已经不是第一次了,在之前荣耀play发布会上华为就推出了“GPU turbo”技术。


据第一财经报道,此前华为推出自研 EROFS 超级文件系统、仅是基于华为方舟编译器开发的应用。


但有专家认为,就能够让安卓系统性能提升数倍来看,底层整合了 EROFS 和方舟编译器的华为鸿蒙系统,已经具备了一定实力。


换句话说,华为 2012 年开始规划的操作系统“鸿蒙”,其实就是华为为了以防不测准备的 B 计划。


另外,有消息称,该操作系统已对 Linux 大量优化(已开源),并已用于华为手机中(安全部分)。


中国为什么写不出操作系统?


回顾去年中兴被美国禁运的下场,也曾引发了一大波的讨论,有人说中国现在缺芯少魂,芯片需要工业基础,但操作系统呢?国外大学生写出了 Linux 操作系统,中国能不能写出中国版的 Linux 呢?

“中国能不能写出操作系统?”,这个问题本身很宽泛。以飞机作类比,从纸飞机、玩具飞机、消费级无人机,再到飞豹,J10,J11,J20,再到B2、F22、F35 等等。


如果你问“中国能不能造出飞机?”,答案肯定是可以造的,但造出来的飞机可能跟别人有 20~50 年的差距。


同样的,“中国能不能写出操作系统?”,答案也肯定是能。因为一个几百几千行代码的 micro tiny os kernel,你也可以说它是“操作系统”。


一个像 Windows 这样光代码就有 5000 万行,全球用户数十亿,拥有巨无霸生态的也可以称为操作系统,中国肯定产生过很多 micro os kernel,tiny os kernel。


所以借这个话题,我们不妨更进一步,考虑另一个问题:“中国能不能写出一款比肩 Windows/Mac OS/Linux/Android,获得商业上巨大成功、广泛应用的操作系统?”


不能给出肯定回答,也不敢否定。但我倾向于回答“现阶段不能”。


了解一下操作系统史,或者上过大学操作系统课程,你会发现,很多操作系统原型,或者设计思想,都来源于学校或研究院,比如 Minix/Linux/BSD 等等。


实现一个操作系统是一项纷繁复杂的工程,涉及 CPU 架构指令、数据结构、算法、编译原理、内存管理、进程管理等等内容。


而且在此基础之上,还需要各种各样的应用软件:数据库、工程、设计,有了这些软件操作系统才会有人用,有人用了才能集广大人民的智慧开发更多的软件,反过来促进更多的人用,形成良性循环。


当今,Windows/Mac OS/Linux/Android已大行天下,形成了一个比四大洋还深的护城河,从头开发一个能比肩这些操作系统的竞品,真比登天还难。


所以,要做这些事情,需要花费巨大的人力、物力、财力。这不是几个人的意志力就能搞定的事情,而是需要整个社会达到一定阶段。


中国的哪些群体、部门、企业可以有资源开发操作系统呢?首先说企业,企业家都是逐利的,我不认为企业愿意投入五年的时候,花费巨大的代价去搞这么一个看不到前途,看不到效益的事情。


再说研究院,中国的众多研究院,除了医学,都在往高大上不接地气不着调的路子走,所以我不认为他们会去做这个事情。然后就是高校,我想重点说一说高校。

我写 OS 内核的经历


我高中开始写代码,从 2008 年读本科,当时受到倪光南关于“中国人要有自己的操作系统”的感召,想写一个小型的 OS 内核。


然后我在学校里搭一个 SVN 服务,把 OS 内核代码放上去,采用校内开源的方式,逐渐去完善这个 OS 内核。


相信每届学校都会有牛人,把牛 B 的思想加进来,最终走出一条自主操作系统的路。


大学学生是最有精力和资源做这个事情的人。他们有大把的时间、精力,而且学校会教授操作系统、数据结构、算法、编译原理、数据库等基础课程。


如果学校有一个自己的 OS 内核,在上课的时候结合这个 OS 内核给学生讲课,效果一定非常好,让学生们能亲身实践这些比较“虚”的课程,一定会吸引不少人参与这个项目。


最后通过长期的工程管理,会让这个操作系统逐渐成熟丰满,并且在某一时刻走向工业化。


但是,我想说但是,等我开始做这件事,才发现,在中国的大学,懂编程的人非常少,既使计算机学院,也找不到几个能写代码的,更不容说能写 OS 内核的。


但我找了 8 个技术稍微好点的同学,我们每人分一块领域,比如 IO 管理,内存管理,进程管理,研究 Linux 内核,各人学习一块,然后每周做报告。


但是,经过两个月我就发现,太难了,大家对 OS 内核一点都不理解,而且还不愿意学。只能作罢,于是我决定,我自己来。


整整大半年的时间,我白天上课,做项目,晚上熬到 2 点多,读 IBM BIOS 中断手册,赵炯的深入理解 Linux 操作系统,Intel的 CPU 指令手册,Minix/Orange/Linux v0.12 源代码,各种设备的指令手册。


最后我花了 3 个月时间,写出了一个能在模拟器上跑的 OS Tiny 内核(这段历史距今有 7-8 年历史,记不太清了)。


然后,我想了很多办法把这个 OS 内核推广出去,让同学们都知道,并参与进来,但其中的泪不知有多少,比如:


参加学校创业大赛,评委只有一个计算机老师,并且是计院副院长,其他人不发问不说话,看样子是完全不懂。


这位计算机副院长评委问我:你调了什么 API?我回答,我写的是 OS 内核,如果说调了 API,BIOS 中断算一个吧。


然后我感觉他没听懂,他又问了一遍,你要回答你到底调了什么 API?我彻底蒙了,又说了一遍答案。


然后他又问,你这个有什么用?我说有几个用处......我感觉他还是没听懂。最后给了我一个三等奖,而我另外一个只做了一个月的项目,拿了个一等奖。


想搭建 SVN 服务,跑计院申请机器,苦苦请求之下给了一台,但不给固定 IP,跑宣传部申请域名,说不给申请,因为他们听上去感觉我的这个事情没什么用。


让计院领导帮忙搞定,计院领导也说你这个没什么用,让我自己搞......最后只能用一个只有动态 IP 的服务器搭建了一个 SVN 服务,把 OS内核源码放上去。


找一些听说比较牛的学弟学妹们,给他们讲 OS 内核源码,他们一脸懵 B。


不知不觉,到了我大四,虽然在我拿到毕业证之后还在为此事奔波,但我最终要离开,于是找了个人交代了下帮我维护 SVN 服务器,拜拜。


然后是读研三年,发现新的 985/211 大学也一个尿性,想做这件事,没人会 Care,大家为了发 Paper,都在扯各种高大上的东西,都在为生计奔波,我都不好意思提 OS 内核了。


后来我想读博,去大学当老师,继续我的想法,但一想大学里都是这个鸟样,我一个也改变不了,随他去吧。


说了这么多,我把 OS 内核源码贴一下,后来我放到 Github 上了:

ahhuiyang/LycheeOS


总结


我倾向于说“现阶段不能”,是因为,纵观计算机发展史,许多计算机基础技术往往产生于高校。


比如操作系统,数据库,搜索引擎;比如国外的卡内基梅隆,哥伦比亚,Stanford,Berkerly 等,无数的技术在这里萌芽,成熟,然后被学生带到工业界。


比如 Google,开始是 Stanford 两个学生在学校里做实验捣鼓出 Google 的核心算法 PageRank,然后退学用这个算法去创建了 Google。


但在中国,起码在我所见的两个高校,计算机学院领导、老师完全忽视代码,不注重保存、维护学生的代码成果,没有一个项目能在学校里扎根并得到很好的发展,这简直是计算机学院最大的耻辱。


在这种环境下,不可能产生操作系统、数据库、编译器,永远都不可能。


另外,像其他行业一样,中国的学生们,在初中高中,老师、家长一直给学生灌输“计算机就是洪水猛兽”这个观念。


什么碰了电脑全毁了之类,许多计算机学院大一新生甚至连计算机基本操作都不会,几乎都是到了大学才开始学习计算机专业知识。试问,这种环境出来的计算机学生,如何能学好计算机。


电脑是一项伟大的工具,如同任何一项工具一样,我们应该从小教育孩子合理使用,如果要学编程,初中、高中就开始学起,任何一项能力,必须经过长期的训练和坚持,才能达到牛 B 的程度,大学课堂上的知识量估计只能占 10%。


我很庆幸我高中就开始学编程,写代码了,一路走来,我发现我的路越走越对。


最后,就像我上面说的,Windows/Mac OS/Linux/Android 已经把护城河挖的很深了,在相同的领域竞争,按照传统操作系统的模式做国产操作系统,我个人认为几乎没有机会。


我们不但没机会,在核心技术的能力上还比较欠缺。我觉得可以从中小学生开始启蒙编程教育,尽早培养更多的人才。


等这些人进入大学就有知识有意识去钻研计算机核心技术,加上大学良好的环境和充足的时间,还是很有可能发展出下一代操作系统(比如 AI 操作系统)的原型。


再利用高校优势,不断吸收牛 B 的研究成果和思想,同时带动 CPU、硬件的发展,带动产业链上下游核心技术,走出一条独特的路,说不定还有希望能搞出一个有竞争力的东西出来。

作为程序员你觉得为什么中国写不出操作系统?你如何看待因美国禁令华为手机将被暂停谷歌移动服务支持?欢迎底部留言讨论。

来源:大数据文摘,知乎等综合整理,《中国为什么写不出操作系统?》一文作者稻草鱼,可点击阅读原文查看。

精彩文章推荐:

对!嫁人就嫁程序员!

天天淘宝,你却不知道个性化推荐技术...

阿里专家:工程师快速成长的10个简单技巧

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存