138
社区成员




转载自: https://www.weibo.com/1926329563/LujMQyoay 作者:魏永明VW https://www.weibo.com/u/1926329563
从 2015 年开始,我就一直在思考一个问题:为什么我们国家的自主操作系统在近二十年的发展中未能结出累累硕果?
谈到这个问题,很多人会提到投机取巧、穿马甲这类现象,比如这两年国家搞信创,裹着 CentOS 尸体的各种自主开源操作系统如雨后春笋般冒了出来。2018 年我想明白了,出现这些现象的根本原因是:我们,包括为各种操作系统站台的大学士们,对操作系统的认知太过肤浅——曾几何时,我们认为只要把 Linux 内核重写一遍就是我们自己的,把 Android 改头换面也就成了我们自己的。这种肤浅的认知,导致我们下意识地选择捷径,还美其名曰“弯道超车”。结果是,二十多年过去了,国产自主操作系统界仍然乏善可陈,没有出现任何可以和老美一较高低的技术或者产品。
今天,我们有必要从方法论的高度上考察操作系统,只有这样,才能提高我们对操作系统的认知水平,并在正确的方法论指导下开展我们的设计、研发和推广工作。在 2015 年到 2018 年的这三、四年间,我写就了一系列关于#操作系统方法论#的文章,其中的《三谈操作系统》提到了操作系统的本质特征。七年后的今天,我们再回顾这篇文章的观点,依然正确,无可指摘。
我们从操作系统的定义谈起。
到底什么是操作系统?操作系统是非常基础的系统软件,它支撑所有的应用程序执行。但操作系统以及相关术语的不规范使用,经常会给我们带来一些认知上的混乱,比如,所有人都知道Linux 是一个操作系统,但基于Linux 的 Android 也被称为操作系统。
目前大家公认的操作系统定义,应该和百度百科给出的一样:
操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
我认为,运行在特定硬件运算平台之上,为上层应用程序提供了完备、自洽的程序接口,方便开发人员利用各种硬件资源开发应用程序的系统软件,就可以称为“操作系统”。
在上面这个定义里边,我强调如下两个概念:
1、操作系统必须提供完备、自洽的程序接口;
2、操作系统首要服务于开发人员(软件工程师)。
百度百科给出的操作系统定义,其实应该属于另一个术语“内核(Kernel)”。比如 Linux 操作系统,本质上是 Linux 内核外加一些基础的函数库、工具等形成的。基于此原因,自由软件基金会的 Richard Stallman 就一直强调应该把 Linux 操作系统称为“GNU/Linux”操作系统,因为配合 Linux 内核工作的基础库和工具,是由自由软件基金会组织开发的,这个项目的名称是 GNU。
一个操作系统的内核,会通过特定的手段提供一些接口,但这些接口相对原始,对开发者并不友好,而且不同的操作系统可能会提供不同的接口。后来大家想到一个办法,通过对原始接口做进一步的封装,可以让开发者不管用哪个内核,都可以使用统一的接口来编写应用程序。为满足这个需求,出现了 POSIX 标准。目前大部分的操作系统都遵循 POSIX 标准为应用程序提供接口。
但是,基于 POSIX 标准的操作系统接口仍然比较底层,对程序员的要求较高,一般需要使用较为低级的计算机编程语言(常见的如C语言)来开发应用程序。而后来出现的图形用户界面,由于各个操作系统厂家的实现差异太大,并没有形成统一的标准,这就导致了很多操作系统,就算针对同一种领域,比如同为桌面电脑操作系统的 Windows 和 MacOS,在接口上也存在着巨大的差异。
而操作系统提供给应用程序的编程接口,其实是围绕操作系统形成的生态体系之护城河。
操作系统真的有那么难写吗?不考虑性能的情况下,能力强的大学生都能独立写出来一个吧。我觉得凭借国内的计算机专家搞定一个有良好性能的操作系统问题不大,主要问题在于硬件和生态。还有我也不觉得国内的程序员照比外国差多少,当然和美国的顶尖程序是比不了的,毕竟人家有几十年的技术积累,但是其余国家的和其他层次的真的差不了多少。
企业研发操作系统的主要激励是安全和可控,使用开源资源是不违背这两个主要目标的;开发时使用开源资源节省成本,同时接入现行主流生态,这是现代软件工程的一大进步。
我认为刻意追求“国产”而放弃优质开源资源是不明智的,事实上企业的理性决策也是规避了这种做法的。鸿蒙是一个比较好的基于开源的自研的例子:华为开发鸿蒙除了安全可控,也有助力自家的万物互联生态的战略意图,故在鸿蒙系统中引入了种种相关的技术创新点,同时借助android底座节省了成本,缩短了开发周期。
当然了,您指出的大多“自研”操作系统在引入开源资源后缺乏创新也是事实;我认为究其根因,是因为国内软件开发龙头的所谓“互联网巨头“,过去20年间只是借助中国各个互联网衍生市场从无到有的红利壮大,算不得技术企业;如今红利吃到头了,各家有了做技术的动力,想必经过资本注入、优胜劣汰,终是会有改观的。
【转载评论】
四野04341:你说的这些应该是正常现象,对于厂商来说是一穷二白,一没有经验积累,二没人才培养,三没市场运营,现阶段就是抄抄改改
22-5-22 22:35 来自湖南
魏永明VW
:关键是抄了二十年没长进。[哈哈][笑cry][嘻嘻]
22-5-22 22:39 来自北京
魏永明VW
:回复@hustonjn:嗯,您提到了国内软件发展缓慢的另一个问题:没有形成有效的商业模式,说白了就是搞软件挣不到大钱。
22-5-23 16:39 来自北京
【转载评论】
魏永明VW
:真的“自主”操作系统,必须要有自己的灵魂,只有这样,不管换什么衣服、是不是经过了整容,那人还是那人;通俗一点讲,只有换了脑袋的才能是一个全新的个体。
22-5-23 02:13 来自北京
魏永明VW
:还有一些所谓自主操作系统,只是修改了已有开源操作系统的内部代码,做了一些优化或者去掉了别人的一些东西,添加了一些自己的内容。如阿里 OS 就属于这种,或者那些号称深度定制的 Android 系统也属此类。这种做法如同整容,的确动了些刀子,甚至改变了性别,但人还是那人,改了名字或性别也还是那人
【转载评论】
杜宽数码人:为了兼容现有APP,从及生态的快速建立,后来的操作系统大多采用了内核拿来主义,导致操作系统最核心的性能与安全性控制能力不在自己手中,这种对核高基填补空白,以及市场占有率的急切心情,是做不好基础软件的,要有十年磨一剑白的精神才行。
【转载评论】
小飞侠feixia: 可以三步走
第一步:先把各种刚需软件都能国产化替代了
第二步: 第一步完成的基础上,把这些国产化软件移植到到国产操作系统上面
第三步: 软件和系统全国产,生态也有了,可以大批量推广了