V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Buges
V2EX  ›  操作系统

独立自主开发一个 OS 最大的难点根本不是技术问题

  •  
  •   Buges · 2019-08-13 12:09:21 +08:00 · 11084 次点击
    这是一个创建于 1931 天前的主题,其中的信息可能已经有所发展或是发生改变。

    外界总有一个误解,好像开发一个 OS 是一项非常了不得的事,国内技术不行,先进的技术都被外国垄断卡了脖子。做出自己的操作系统就像造出原子弹送火箭上天一样艰苦卓绝,意义重大。

    “独立自主”有什么含义暂且不表,但作为业内技术人士,总不能也抱有这样的认知吧?

    随便google 一下,铺天盖地的教程和文档起码一个不算太差的计算机专业的本科生花上 30 天做个玩具 demo 还是没太大难度。

    即使不看这些,稍微动脑子想一想,linus 做得,你就做不得?

    所以开发一个 OS 最大的难点根本不是技术问题,甚至技术问题都占不得九牛一毛。

    技术角度无非就是内核,基本系统软件(图形,架构,运行时等),稍微有点规模的公司都能做得。

    并且作为一个更的系统,只要开发人员不是太水,没有历史包袱在,做到比古老的 Windows,*nix 更优异不在话下。(这些系统由于历史遗留问题从而令人诟病的地方有多多不用我多说)

    一个系统最根本最关键的是生态,如何让用户使用?如何让软件厂商为你的系统开发软件?如何让硬件厂商为你的系统适配驱动,推出使用你的系统的产品?

    以上这些都不是技术的范畴。可以说是商业问题,经济问题,甚至是政治问题。

    现有的操作系统最不可动摇的就是生态,也许 30 年前你开发一个足够优异的系统可以占领市场,但放到现在,哪怕写的再好,也几乎没可能动摇市场霸主的地位。就像铁轨的宽度决定于两匹马屁股的宽度一样,习惯的力量不可动摇。

    要推广生态,要么是海量资金硬砸,要么是物联网这样的底层硬件变革新领域的机遇,要么就是行政手段强制进行。

    所以吹牛造势似乎并没有什么问题,只要大势造成,攻克生态的最大难题,即使一行代码还没写也没关系。代码,根本就是小事。

    如果有一天,行政力量要求封杀某些系统强推某些系统,那么提前宣传造势 ppt 的重要性也就不言而喻了。

    102 条回复    2019-11-16 09:08:29 +08:00
    1  2  
    Levee
        1
    Levee  
       2019-08-13 12:10:42 +08:00
    新场景、新机遇、新生态。
    liprais
        2
    liprais  
       2019-08-13 12:12:51 +08:00   ❤️ 4
    "随便 google 一下,铺天盖地的教程和文档起码一个不算太差的计算机专业的本科生花上 30 天做个玩具 demo 还是没太大难度。"
    楼主你也知道这是玩具不是么
    Buges
        3
    Buges  
    OP
       2019-08-13 12:19:30 +08:00   ❤️ 4
    @liprais #2 玩具是因为受制于个人的精力和工作量。我想强调的是并非是受制于技术不足,足够规模的团队来做当然就不是玩具了。
    greatdancing
        4
    greatdancing  
       2019-08-13 12:22:29 +08:00 via Android   ❤️ 3
    沸腾的好处是 bat tmd 这些厂都麻溜得适配
    不适配就是
    agagega
        5
    agagega  
       2019-08-13 12:24:08 +08:00 via iPhone   ❤️ 1
    楼主你别说,我去年就听到花粉「现在哪有人用外国软件?国家让 BAT 只给华为系统开发,生态就可以吊打了」的神论了
    mars0prince
        6
    mars0prince  
       2019-08-13 12:25:11 +08:00
    我替你说: 是政治问题
    GenkunAbe
        7
    GenkunAbe  
       2019-08-13 12:25:35 +08:00 via Android
    从 0 开始打造一个 80 分的系统或许的确难度不大,但是想把一个 80 分的系统的全方位性能、安全提升到 90 分,还真是技术问题。另外,你也知道了用行政命令可以推广操作系统,那么发布一个不符合短期利益的行政命令在我国很难吗?需要像外国那样造势、辩论、说服、妥协吗?因此生态是操作系统最大的难点而不是技术,这个观点还需讨论。
    dobelee
        8
    dobelee  
       2019-08-13 12:27:28 +08:00 via Android   ❤️ 1
    是不是对 demo 有什么误解?
    tvallday
        9
    tvallday  
       2019-08-13 12:33:19 +08:00 via Android   ❤️ 1
    OS 有很多种的,有一种因素可以改变这种需求,那就是造出一个硬件并且使用自研的 OS,使得这个 OS 为用户熟知。比如相机上的 OS,比如飞行器上的 OS,甚至飞行器上娱乐系统的 OS,这些领域相对细分,可操作性大。行政命令要求使用的操作系统,没有强大生命力,活不了多久,不然以俄罗斯这么牛的计算机基础技术,早就遍地是本国的操作系统。连 nginx 这种服务器基础产品也是经过市场检验才这么受欢迎。没有市场的洗礼,吹自己多牛都没人信。
    love
        10
    love  
       2019-08-13 12:33:52 +08:00
    就国内的水平,还真是个技术问题,甚至连文档完善这步都做不好,你看看那些开放平台,别说是 OS 了
    2kCS5c0b0ITXE5k2
        11
    2kCS5c0b0ITXE5k2  
       2019-08-13 12:35:22 +08:00
    怎么了 看看知乎的论调 苦一两年 国内生态就起来了 又不是不能用 没 Windows 你不会死
    Buges
        12
    Buges  
    OP
       2019-08-13 12:46:19 +08:00
    @greatdancing #4 甚至只要有一定市占率基础,就可以“只适配” 了:-)

    @agagega #5 非常魔幻的是,他说的对...fuck GFW

    @mars0prince #6 以偏概全了,是生态问题,政治只是推广生态的手段之一(虽然是某厂正在做的)

    @GenkunAbe #7 但由于历史遗留问题,像 Windows 这种古老的系统也就 50 分,Android 能到 60 分,苹果系还算成熟但也不尽如人意。
    然后行政推行哪一次不伴随造势啊(参考某地,垃圾分类),但是辩论说服妥协到是没有,一片叫好就对了🤣。

    @dobelee #8 我理解的是 example,an explanation of how something works.
    chinvo
        13
    chinvo  
       2019-08-13 12:48:28 +08:00 via iPhone
    rtos 也算 os,没毛病

    我们做裸片开发的每天都在写

    但是你说让我写个 NT-like 或者 Unix-like,那是不可能的
    jecshcier
        14
    jecshcier  
       2019-08-13 12:50:16 +08:00 via iPhone
    没毛病。
    swulling
        15
    swulling  
       2019-08-13 13:00:06 +08:00 via iPhone   ❤️ 1
    低估软件工程的难度了,又不是写 RTOS 那么简单,写出能跑 Android 的内核,工程上真的很难。
    liprais
        16
    liprais  
       2019-08-13 13:05:09 +08:00
    @Buges 做过么?
    就不让你做操作系统这种大而全的东西了
    就做个应用,写个跟 mysql 功能一样的数据库如何?
    你的问题是书读的太少而想的太多
    looseChen
        17
    looseChen  
       2019-08-13 13:05:52 +08:00 via iPhone
    没人提到知识产权吗???
    echo314
        18
    echo314  
       2019-08-13 13:08:32 +08:00
    @looseChen #17 国家对立的时候知识产权算个屁,不过一旦又恢复友好合作关系,那就可以重新算账了。
    est
        19
    est  
       2019-08-13 13:09:33 +08:00
    反过来说,技术都不过关,能有什么生态?
    maddot
        20
    maddot  
       2019-08-13 13:14:46 +08:00   ❤️ 1
    呵呵
    q8164305
        21
    q8164305  
       2019-08-13 13:17:31 +08:00 via Android   ❤️ 2
    就是技术问题,考过试都知道,试卷从 60 考到 80 跟 80 分考到 100 分根本不是一个难度,越靠近极限难度越高,玩具 os 离真正的 os 还差得远
    yukiww233
        22
    yukiww233  
       2019-08-13 13:18:59 +08:00
    生态当然靠“兼容”啊
    hoyixi
        23
    hoyixi  
       2019-08-13 13:23:27 +08:00   ❤️ 1
    发动机原理都是公开的,然而不是人人都能造的,造出来了质量咋样也不好说;
    CPU 原理也很简单,然而也不是人人都能造的,造出来了质量咋样也不好说~
    reus
        24
    reus  
       2019-08-13 13:23:55 +08:00
    独立自主就是个笑话
    参考朝鲜和韩国,同文同种,一个吃不饱饭一个四小龙
    joouis
        25
    joouis  
       2019-08-13 13:24:57 +08:00 via Android
    回复标题,至少技术是最大难点之一。我之前在阿里 yunos,巅峰时期一千来号开发人员,囊括了国内多少系统底层开发的大牛,结果呢... 3.0 和 4.0 系统烂成什么样,也不怪六七八线大叔大妈都不愿意用
    BlackSas
        26
    BlackSas  
       2019-08-13 13:29:00 +08:00   ❤️ 2
    其实我有点赞成楼主的。
    Windows 多牛逼啊,wp 还不是死了。
    美国公司的操作系统之间竞争,更多的是市场竞争。
    国内出个 OS,如果真要扶起来,我觉得不是不可能。
    nguoidiqua
        27
    nguoidiqua  
       2019-08-13 13:34:38 +08:00
    现在做系统是不难,不过以 Linux 为例,它已经做了快三十年,投入人力不知道多少,你准备花多少人力和时间去做?上面有人说阿里 yunos 巅峰时期一千来人,Linux 内核的贡献者据说有两万人,整个 Linux 生态得有多少人投入?

    就算你真的舍得花这钱这人这时间,问题还有个,你真的能找到比 Linux 那群开发者更好水平的人么?
    anguiao
        28
    anguiao  
       2019-08-13 13:34:42 +08:00 via Android
    看看 Linux 的 GUI 都多少年了,也就现在这样,你真的觉得从头搞一个操作系统是个简单的事情?
    Cooky
        29
    Cooky  
       2019-08-13 13:35:07 +08:00 via Android
    @BlackSas wp 死是因为微软作死,死透了是因为微软给用户喂屎,不是做不好,是根本没想好好做,到最后大势已去,说啥都没用
    ryd994
        30
    ryd994  
       2019-08-13 13:35:46 +08:00 via Android   ❤️ 1
    不好意思你真做不到
    真以为今天用的 Linux 是 linus 一个人写出来的?今天的 Linux,里面到底有没有他最初的代码都难讲。每个部分都重构过或者用了全新的 API。就算有老代码也不过是为了维持兼容性而已。

    你花 30 天写的玩具 OS,别说 60 分,连 10 分都拿不到。

    每年有过千的程序员向 Linux 提交代码,其中大部分是在公司支持下作为工作内容的一部分所提交的。华为虽然近年来有不少贡献,但也不过是众多公司中的一个而已。

    https://www.linuxfoundation.org/2017-linux-kernel-report-landing-page/
    sunocean
        31
    sunocean  
       2019-08-13 13:52:19 +08:00 via iPhone   ❤️ 1
    楼主想当然了。楼上说的对,还得多读书。
    ryd994
        32
    ryd994  
       2019-08-13 13:54:25 +08:00   ❤️ 3
    "最大的难点根本不是技术问题"这点我不反对

    但是你连技术问题都解决不了

    Android 基于 Linux 你以为是 Google 不想纯自研? Fuchsia 吹这么就还不是没量产?

    "并且作为一个更新的系统,只要开发人员不是太水,没有历史包袱在,做到比古老的 Windows,*nix 更优异不在话下。"
    NT 叫古老? Linux 恐怕比你年轻多了。关键部分的性能一直是优化的重点。历史的包袱主要被开发者背了,对终端用户来说,性能要好最重要的是和硬件厂商的合作。其次是充分的性能优化经验。碰上蹊跷的性能问题,几十年的老工程师一样摸不着头脑。而且还没法挂 profiler。只能踏踏实实地控制变量收集数据,然后一行行分析源代码。
    你张口就一句重写一定更好?你连现有的都不能理解就想弯道超车?

    高级 Kernel Developer 值多少钱,你可以去问问

    利益相关:我在工作中给 Linux 贡献过代码。工作时间,用公司的资源,拿着工资。
    Macolor21
        33
    Macolor21  
       2019-08-13 14:07:17 +08:00   ❤️ 2
    见过大部分框架,都是基于某些知名论文,如 Netty 也只是参照《 A Scalable Concurrentmalloc(3)Implementation for FreeBSD 》实现了 Java 版本的 jemalloc 然后对内存的管理。我相信中国也有许多能够阅读国外 paper 然后提炼出可用框架的人。但是什么时候能有写出这些论文的教授 OR Company 呢?
    TobiahShaw
        34
    TobiahShaw  
       2019-08-13 14:16:28 +08:00
    突然想到 Android 应该算是 GUI 最完善的 Linux 发行版(之一?)了吧,哈哈
    Buges
        35
    Buges  
    OP
       2019-08-13 14:20:17 +08:00
    @liprais #16 写个玩具数据库,没问题。Mysql,一个人肯定做不到。
    @looseChen #17 做到比别人效率更高更好很难,但仅仅是为了不同而不同,绕过专利的话问题不大。

    @yukiww233 #22
    @joouis #25 兼容又是另一回事了。绕不过去的专利,许可,也没有了没历史包袱的优势。

    @anguiao #28 Linux GUI 的生态...

    @ryd994 #30 当然不是他一人。除了内核 Linux 生态更重要的是 GNU 套件编译器以及基础库等基本的软件。很多公司提交的代码是为了驱动自家硬件吧...
    技术难点当然有,但论复杂度 Linux 内核较之于阿里这样的大厂上亿并发的整套系统恐怕也是不如的。
    基于别人的系统套皮是因为省事而不是不能重写。(节省大量工作量)
    不是重写就更好,而是舍弃历史包袱后会更好。像 Windows 下一代不再兼容 exe,(如果生态跟上的话)对整个系统是质的提升。即使技术有差距也能弥补了。

    我想表达的是一个 OS 从技术上不存在什么鸿沟,壁垒。是工作量和投入的问题。cpu 架构也如此,仅仅为了不同而不同绕过专利不难,难的是相应平台上的系统,编译器等生态。当然光刻机工艺是另一回事。

    不过目前国内正在做的对用户而言弊远大于利就是了。
    gggxxxx
        36
    gggxxxx  
       2019-08-13 14:21:15 +08:00 via iPhone
    哪里来的风气那么喜欢吹生态?
    就国内这种墙内环境,搞个红星系统都能用户数量过 10 亿,软件厂商扎堆。百度这种恶心人例子还看不到么?
    国内连相关人才都没几个做个毛的 os。偷点开源代码就是能耐了?相关计算机理论论文有几篇是国人写的?没有真正的理论知识做基础怎么写 os ?难道像楼主说的照着教程抄一遍?自己的思考和理念在哪里?
    nguoidiqua
        37
    nguoidiqua  
       2019-08-13 14:24:50 +08:00   ❤️ 1
    说句实话吧,国外搞系统都几十年几代人才积累了,有丰富的经验,不管生态上是成功也好失败也好,别人是真的很容易凑百十号人就做出一个技术上能用的新系统。

    但不要以为别人容易,就等于谁都容易,国内开发者其实很缺系统开发方面的经验,很多东西说起来容易,但知易行难啊。不做几个失败的系统,就很难做出成功的系统,问题是国内都想着让别人去培养人才积累经验……

    其实华为的所谓微内核,没有 Fuchsia 的 Zircon 内核 在前面探路,不是那么容易做出来的。
    Buges
        38
    Buges  
    OP
       2019-08-13 14:35:47 +08:00
    @gggxxxx #36
    @nguoidiqua #37
    你说的对啊,”独立自主“的受益人可不是用户,是谁那就不能说了。
    做出来的系统更好的 qj 用户也是事实。
    自己的思考和理念? sorry,不存在的。那也不影响做系统,那国外先行者的借( chao )鉴( xi ),然后为了不同而不同就完事了~
    写个系统的难度跟让别人为你的系统写软件是不能比的。
    我 diss 的就是那些认为出 os 是技术独立创新优越的人,实际上在国内真出一个 OS 的话最能体现的是行政能力的优越才对🤣。
    youngliu
        39
    youngliu  
       2019-08-13 14:46:53 +08:00   ❤️ 1
    看到你写的这个:“代码,根本就是小事。” 我就呵呵了
    momocraft
        40
    momocraft  
       2019-08-13 14:49:52 +08:00
    从公开知识 (包括已有的正经研究和实现) 推测他们的细节很可能不准
    能把几个内核掺在一起的 “微内核” 更可能是重新定义了内核

    这股风吹起来,以后找工作就要会写分布式 UI 了 lol
    nguoidiqua
        41
    nguoidiqua  
       2019-08-13 14:56:59 +08:00
    做系统是没有技术壁垒的,做好系统是有技术壁垒的。

    如果你不要求做好,那干啥都没壁垒。旧石器和新石器相比也复杂度也没多大区别啊,工作量的问题,不过这之间据说花了上百万年。青铜器和铁器相比复杂度也没有多大区别啊,温度高低的问题,这之间有几千年。
    GPLer
        42
    GPLer  
       2019-08-13 14:58:20 +08:00 via Android
    理论固然重要,但还要结合国情啊!国内这局域网普通人常用的软件就那么几个,办公 WPS 也能解决,如果系统真做出来了,花钱请适配就完事了,何谈生态问题?
    ryd994
        43
    ryd994  
       2019-08-13 15:11:19 +08:00   ❤️ 20
    @Buges “论复杂度 Linux 内核较之于阿里这样的大厂上亿并发的整套系统恐怕也是不如的”
    ?????
    Linux 写了几年?阿里写了几年? Linux 多少人写?阿里这么牛逼怎么没搞出阿里 OS ?那个 yunos 不过是基于 Linux 适配了一个发行版,还没适配好。你说这种话之前,先去 Linux 提个 patch 如何?说话这么大口气,想必比“不算太差的计算机专业的本科生”要强得多吧?
    内核里几种中断级别?几种锁?什么时候可以 block 什么时候不允许 block ?设备驱动为什么分 top half 和 bottom half ?
    这是“茴字几种写法”的问题,但是你既然说要写自己的系统,至少这些基础知识还是要了解的。和系统无关,你自己写一套系统还是跑不出这些概念。Linux 和 Windows 内核态驱动我都写过。这些基础概念,尽管不同的系统里名称不同,接口定义不同,甚至框架不同,但最终实现结果还是非常相似的。

    别说 Windows 代码你看不见,Linux 代码全公开你也一样看不懂。光是基本的网络栈就够大学课程学一年的。操作系统,计算机组成,课上学到的不过是皮毛。Linux 内核驱动开发,市面上的书大多停留在 2.6 时代。Linux 最新 release 已经过 5 了。没有人带你连代码都看不懂。Linux 进程调度器,敢碰的人一位数最多,因为实在是没人看得懂。但是这是为了性能不得已的不得已。CPU 调度对一个操作系统的性能影响之大,自身开销的限制之低。即使 Linux 编码规范里禁止乱飞 goto,只有调度器里还有少量乱飞的 goto。难道是这么多 Linux 开发者没人会修么?

    "不是重写就更好,而是舍弃历史包袱后会更好。"
    所谓历史包袱就是个伪命题。操作系统永远是针对当前的前沿优化。老旧设备加个编译时可选的后向支持就够了。开发者可能改接口改到吐血。但是对终端用户来讲,想大幅超越 Windows/Linux 断没有可能。Windows 和 Linux 在不同的场景下性能各有胜负,但长期大幅吊打的情况从来没有过。就算偶尔有不支持的新硬件性能跟不上,下一版立刻就修掉了。你是有多牛逼敢说吊打优化到指令级的性能?

    "基于别人的系统套皮是因为省事而不是不能重写"
    能啊,写个十几年才写出来也叫写出来了。在这十几年间没人会用,因为实在和现有的差太远。龙芯就是个好例子。我们终于自主研发追上了 intel 的。。。。。。奔四。绕过专利不难?真不难 intel 还能吊打 AMD 十几年? AMD 如今是翻身了不假。中国有几间公司能有这样庞大的资源,和十几年一直开发的坚持。况且如今的局面,不排除只是 intel 走了弯路,新技术难产太久。将来新技术出来,到时候能不能翻身还两说。服务器市场上,你大爷还是你大爷。

    “ Windows 下一代不再兼容 exe ”
    exe 不过是一个文件名后缀。linux 下你想叫什么名字叫什么名字。就算你抛弃全套系统 API/ABI,又能如何呢? API/ABI 一路扩充至今,如果是 API 限制了性能,那再加一套新的平行的框架就行。你以为 Linux/Windows 现在还在用最初那套 API ?

    硬件厂商为了支持自家硬件往 Linux 里提交代码不假。但是这些代码就只是驱动么? Intel 提那么多代码,难道 Intel 硬件特别多驱动特别多? Intel 为了保证 Linux 在 Intel 硬件上的性能而提交的优化,在其他平台上就用不到了? Mellanox 就不能给 Linux 的网络栈写代码了? Intel 的研究院是吃素的?

    “我想表达的是一个 OS 从技术上不存在什么鸿沟,壁垒。是工作量和投入的问题。”
    当工作量大到一定程度,那就是事实上的壁垒。否则只要我国撕破脸皮不承认任何外国公司的专利,问题不就解决了?
    科技巨头这么多年的技术积淀,你大爷还是你大爷。

    “难的是相应平台上的系统,编译器等生态”
    这恰恰是不难的部分。API/ABI 自己定义了,往 LLVM 里适配就好。Facebook 还不是搞出来个 HHVM ?用户态系统库,比如 libc 都有清晰的定义,还有全开源的实现。用的是 LGPL,也就是允许再发行二进制。也有 BSD 协议的实现。抄一份,自己适配下,号称自主研发谁敢不从?
    反正有什么 bug 也崩不了系统。有什么 bug,挂上 debugger 慢慢看就是了。
    为什么要有各种高级语言,为什么要有各种运行时?就是为了彻底与操作系统去耦。Java 程序只要有 runtime 适配,可以在任何硬件上跑。只要 runtime 支持 JIT,那运行的性能未必比静态语言差。设计之初的目的就在于此。写出高效的不容易,写个能用的还是不难的。各种编译器优化,真正和操作系统绑定的很少。要么是预处理阶段的逻辑优化,要么是和硬件特性(指令集)绑定。操作系统作为一个中间人,任务是管家,对用户态程序运行的干扰越小越好。这也正是操作系统开发的难点所在。很多任务需要在几百个指令内完成。
    ryd994
        44
    ryd994  
       2019-08-13 15:19:50 +08:00   ❤️ 3
    你说代码不值钱,未必错,毕竟代码只要抄抄就有了。就算 Windows 代码,ZF 采购时是有协议可以审查代码的。撕破脸皮不要了强行偷一份偷不到?
    但是给你代码你就会用了?真正值钱的是这批人才。外面人学的再精,能有原作者了解?文档再好,能比原作者亲自讲解好?这些科技巨头的 Principal 级别往上,随便去那个公司都好找工作。能不能留住这批人,才是决定一间科技公司能不能长久的根本。SDE1/2 嘛外面随便招几个应届培训一下就够了。

    比比某些 30 以上直接辞退的公司,高下立判。
    Buges
        45
    Buges  
    OP
       2019-08-13 16:13:44 +08:00   ❤️ 1
    @ryd994 #43 你说的很对,难得这么认真回复,但你们搞内核的和用户,应用层面关注点还却是不一样。

    1. OS 处理的问题更底层,更细化,更局部,为的是解决更复杂问题封装复用,这也是各种库的意义所在。论复杂度,实现一个库和调用 10 个库做应用未必哪个更复杂。我论证的是不说做的好不好,起码做这种复杂度的项目工程的能力大厂还算有的。
    至于时间...你不能以工时来统计程序员的工作量
    然后优化什么的不算重点,何况有那么多可以借( chao )鉴( xi ),“独立自主”了还管你跑得快不快。

    2. 历史包袱是生态的包袱。新版不兼容老组件就得重写老组件,兼容下去又碎片化严重。不是简单向后支持编译选项的问题,整个生态都臃肿混乱不堪。

    3. 省事确实省了很多事,不止内核,还有 native 的基本组件。关键是重写没有多少收益,不值而已。至于架构,说的是“为了不同而不同”不难,没说要做多好,做出来就够。就算垃圾,禁止进口强制你用又怎样

    4. exe 指目前的直接发行的二进制可执行文件。api 鉴权,管理,包管理等各个方面都混乱无比,linux 的碎片化更不用多说。这些没法做,做了就没法兼容。你说加一套?软件继续用旧的。不兼容旧版?生态不允许。这样的碎片化就是指的历史包袱。

    5. “很多公司提交的代码是为了驱动自家硬件” 断章取义了...

    6. 壁垒在于生态。只要行政力量强制用户迁移平台,问题却是解决了。至于好不好用,那不重要,重要的是“独立自主”了~

    7. 这个不太了解。这里说的是架构,你自己搞个为了不同而不同的平台,让 gcc 等编译器适配,还得让各大软件为你的平台编译发布版本,应该也不太容易吧

    8. 代码到没必要偷,我强调的是写代码仅仅是其中很小的一部分。至于人才,现代软件技术越来越让菜鸟也能做大项目,当然好不好是另一回事了...

    “做一个 OS 并取代国外产品推广不代表技术上的进步,而是其他(行政力量)方面的优越” 这是核心论点
    Mulancer
        46
    Mulancer  
       2019-08-13 16:18:56 +08:00
    @BlackSas #26 技术是门槛,过了门槛才有资格谈生态,微软 WP 这种属于过了槛的,所以你才能知道,还有无数槛都过不了的。而且门槛其实并不低
    Raymon111111
        47
    Raymon111111  
       2019-08-13 16:19:06 +08:00   ❤️ 1
    >linus 做得,你就做不得?

    ??? 人和人的差距可比你想的大
    zhang77555
        48
    zhang77555  
       2019-08-13 16:23:34 +08:00
    生态也要靠"对用户友好"和"对开发者友好"来支撑,如何做好这两点难道不是技术难题?
    2kCS5c0b0ITXE5k2
        49
    2kCS5c0b0ITXE5k2  
       2019-08-13 16:25:29 +08:00
    爱因斯坦做得到, 你就做不到?
    jewer3330
        51
    jewer3330  
       2019-08-13 16:28:08 +08:00
    爱因斯坦做得到, 你就做不到?
    loginbygoogle
        52
    loginbygoogle  
       2019-08-13 16:31:38 +08:00
    中国当今义务教育之质量确实让人堪忧,还有很长一段路要走
    looseChen
        53
    looseChen  
       2019-08-13 16:35:04 +08:00 via iPhone
    @echo314 如果 os 没打算跨出国门,你可以当我没说。
    reus
        54
    reus  
       2019-08-13 16:36:07 +08:00
    @anguiao QT 很差吗? gtk 不能用?游戏开发不了?技术上毫无问题,市场不行而已。
    admirez
        55
    admirez  
       2019-08-13 16:47:58 +08:00
    会写代码和会写好代码不是一回事

    会写好代码和会抽象代码更是差了一个太平洋
    seraphv3
        56
    seraphv3  
       2019-08-13 16:53:37 +08:00
    我看过一本日本人的书《 30 天自制操作系统》,的确是 30 天做一个图形化操作系统的 demo 出来
    swsh007
        57
    swsh007  
       2019-08-13 16:55:21 +08:00 via Android
    说简单的去看看 linux 的内核历史
    其实并不是一帆风顺的
    只看协议栈的变化就知道了
    不太相信谁能完全独立自主造轮子
    GenkunAbe
        58
    GenkunAbe  
       2019-08-13 16:57:38 +08:00
    @Buges 按照你的说法,写一个能用的操作系统(不是操作系统内核)不难呀,所以难点不在技术上;利用行政力量的优越性去推广生态不难呀,所以难点不在生态上。那么,难点在哪?
    adminex
        59
    adminex  
       2019-08-13 16:59:36 +08:00
    确实 就像安卓平板也不差,就没软件适配
    liprais
        60
    liprais  
       2019-08-13 17:01:46 +08:00
    @Buges 所以你还觉得技术不是问题?
    habrade
        61
    habrade  
       2019-08-13 17:20:34 +08:00
    再来个大跃进,亩产万斤吗?
    赞同 @ryd994 所说的。
    问题还是要一步步解决的,不可能说花时间就可以解决,就不算问题了。
    Buges
        62
    Buges  
    OP
       2019-08-13 17:29:03 +08:00
    @GenkunAbe #58 难点是生态,我一直都在这么说。
    技术问题只占小部分,并且技术问题量占主要部分。

    推广生态要么海量砸钱,要么底层硬件有变革,要么就是行政手段了。

    所以当某“独立自主”的 OS 出现并推行的时候,代表的不是技术的优越,而是行政力量的优越。
    passerbytiny
        63
    passerbytiny  
       2019-08-13 17:42:55 +08:00
    我本以为最后会有反转,然而看到加粗的“生态”两个字,说吧,贾某某是你几代师父。真要你说得这么简单,那富可敌国的微软,只要搞定几个人就可以让 windows phone 在中国垄断了。
    CantSee
        64
    CantSee  
       2019-08-13 17:55:51 +08:00
    说的很在理啊
    ryd994
        65
    ryd994  
       2019-08-13 18:00:38 +08:00   ❤️ 5
    @Buges “至于人才,现代软件技术越来越让菜鸟也能做大项目”
    现在你知道为什么 Linus 说 C++ is a horrible language 了。
    自动化只能让你写得更快,不能让你写的更好。垃圾写的再快也是垃圾。
    C 语言在底层的地位无法动摇。除非计算原理从根本上改变,比如量子计算。

    “壁垒在于生态。只要行政力量强制用户迁移平台,问题却是解决了”
    是解决了问题还是解决了指出问题的人?先把 12306 迁徙过去试试看?你真以为计算机行业只涉及互联网那点事?慢点就慢点无所谓?直接回 20 世纪吧,重新发明计算机,弯道超车。短期内嘛,算盘又不是不能用。真以为强制推行就能解决一切问题?真以为所有技术问题都可以堆人力解决?工程进步是需要时间需要迭代的。很多坑不踩过的人根本不会知道。人家花了这么多年摸着石头过河。就你聪明会搭桥?

    “你不能以工时来统计程序员的工作量”
    就算阿里全是十倍程序员,也不可能单挑全世界的 Linux 开发者。何况 Linux 开发者的平均水平和一般公司比只高不低。能在 Linux 里有几千行代码的人,到任何一个公司都是至少技术核心,更常见的是小庙供不起大和尚。数量质量,你都比不过。人家几十年的经验,你以为全在写代码?九成九踩坑重写。你能想到的,放心,早就有无数人想到过,然后撞过墙。号称推倒重来,弯道超车的,怎么不想想人家为什么不超?

    微软又不是没推到重来过,NT 就是重写的。为什么没搞个 NNT 出来? Linux 又不是没扩展过 ABI。新 API 完全平行于旧框架,根本就是两套系统,存在哪门子的兼容问题?

    “新版不兼容老组件就得重写老组件”
    Python 3,如何?
    Linux 现在的驱动还有多少在用老框架?不兼容老组件就不兼容,只要老组件不爆炸就行。你们应用不兼容就继续用 XP 好了。RedHat 现在还不是再用 3.x ? 2.6 内核都有人在支持。内核 API/ABI 从来都是只扩充不修改,就是这个原因。你现在拿十几年前的应用放到最新的内核跑,大概率跑不动会报错,但一定不会导致系统崩溃。

    “然后优化什么的不算重点,何况有那么多可以借( chao )鉴( xi )”
    还是那句话,给你抄你也抄不来。底层性能调优不仅耗时间,还要经验。这些经验都在老工程师的脑子里。很多甚至没有理由。感觉这个方向比较有可能,预测对了就能省下几十倍的蛮力。

    “ exe 指目前的直接发行的二进制可执行文件。api 鉴权,管理,包管理等各个方面都混乱无比,linux 的碎片化更不用多说。这些没法做,做了就没法兼容。你说加一套?软件继续用旧的。不兼容旧版?生态不允许。这样的碎片化就是指的历史包袱。”
    你不就想说自创的应用市场么? WPF 微软又不是没试过。安卓应用市场又不是没试过。你想象的完美生态,不出 5 年,就会有新技术出来,到时候你也一样逃不过历史包袱。到时候再重写一遍?
    明显就是没在大公司做过的。随便你做什么,有无数人排着队等着重写一个更好的。这是所有职场新人都有的雄心壮志。出水才见两脚泥。

    @seraphv3 我 30 分钟能拼出一辆奥迪双钻。请问奥迪双钻和特斯拉之间还差多远?不都是电动车?
    justfly
        66
    justfly  
       2019-08-13 18:13:23 +08:00   ❤️ 1
    说的很对,微软就是最好的例子。

    PS. 谷歌断供并不是 AOSP 用不了了,源码还是随便用,说是自研操作系统的原因很牵强,而且自研谷歌服务该不让你用还是不让你用,海外市场还是没门。

    所以,做个物联网系统没啥问题,看到了当前手机操作系统弊病决心颠覆它也没啥问题,但说成替代 AOSP 虽然能带来快感但是从逻辑上说不通。
    ryd994
        67
    ryd994  
       2019-08-13 18:19:46 +08:00 via Android
    你吹生态就吹生态,没必要说的好像除了生态其他都一文不值。

    国产 OS 不难,深度 Linux 不也有人用了说好?修修补补定制化。一个小公司尚且可以做到这个程度。zf 推动一把,搞个发行版有何难?上面想搞什么生态搞什么生态。

    但是要从零起步,三五年内,任何一间公司都做不到。微软凭借人才储备可以。Google,Apple,也未尝没有这个实力。

    国内的大公司,问题倒不是说钱或者人的数量。而是踩坑的经验,和决定性的人物。要么直接挖人。国产自动驾驶不就是这个路线。然而真正做起来还是遥遥无期。何况真正核心的专家,手里拿着那么多股票,本就是和公司共进退的。这才叫技术合伙人。
    gamexg
        68
    gamexg  
       2019-08-13 18:26:09 +08:00
    @Buges #45 行政力量可能真的强推不动。
    看历史,当年强推过 WAPI,行货手机禁止 WIFI,必须用 WAPI,这样做都没能强推起来。
    Buges
        69
    Buges  
    OP
       2019-08-13 20:07:10 +08:00
    @ryd994 #65
    >是解决了问题还是解决了指出问题的人?
    在某些国家这好像是一码事...

    从来没提到过超越,差也差不到算盘的程度。做个能用起码没问题。

    而内核有很多共通的地方,细节算法上的实现上有别人采过的坑,你可以说国内程序员没能力实现但借( chao )鉴( xi )的能力不至于也没有。

    至于扩展,多版本并行。这取决于设计之初的可扩展性,如果认为重来和修修补补一样的话,那也没必要整天重构了。你新版兼容就有(部分)应用用旧 api,不兼容有(部分)用户用旧版(反过来需要软件兼容),最后碎片化,混乱无比。
    况且,再怎么说,现在终端的用户无论桌面还是服务器,一直都在忍受着碎片化的混乱。
    甩掉历史包袱的好处,确切地说是整个生态(如果跟得上的话)全部整合更新的好处。

    应用市场是分发方式,与这个无关。指的是更先进的包管理与 api 鉴权机制,由于兼容性碎片化无法推行。

    >到时候你也一样逃不过历史包袱。到时候再重写一遍?

    是这样的,早期设计早晚有跟不上变化的时候。不过是 5 年还是 50 年,取决于最初设计的可扩展性以及设计者是否能正确预料未来的发展。

    没有认为其他的都一文不值。只不过我认为生态是其中最重要也是最难实现的部分。
    还有,你的观点中似乎特别注重人才。我不这么想,计算机行业正在快速的去精英化过程中,我认为人才没那么重要并且变得越来越不重要。(虽然作为技术人我也不希望如此)
    loryyang
        70
    loryyang  
       2019-08-13 20:56:14 +08:00
    我觉得技术和生态两者都有影响,一个完善的操作系统也不是那么容易的,需要一定时间打磨
    paparika
        71
    paparika  
       2019-08-13 20:57:05 +08:00
    补充一个,信用问题
    codermagefox
        72
    codermagefox  
       2019-08-13 21:13:27 +08:00
    "即使不看这些,稍微动脑子想一想,linus 做得,你就做不得?"

    "技术角度无非就是内核,基本系统软件(图形,架构,运行时等),稍微有点规模的公司都能做得。"


    V 站的程序员水平已经到 Linus 都瞧不上的地步了吗....对不起,我给大家拖后腿了
    coolair
        73
    coolair  
       2019-08-13 21:55:06 +08:00 via Android
    生态都是屁话,没有什么一开始就有生态的。关键是,人心浮躁,做这个花钱快,来钱慢,没有可持续性。
    cuminflea
        74
    cuminflea  
       2019-08-13 23:06:25 +08:00
    可以再往下推一步放到同一位面考虑。
    比如觉得技术不是最大的问题而生态是,那么意味着构建一个生态的资金成本和社会成本远超构建一个技术上合理的产品。
    那最后做得做不得,做好做不好还是投入产出合适不合适的问题。。。
    juded
        75
    juded  
       2019-08-14 00:36:49 +08:00
    个人认为什么独立自主向来不是关键,关键是你能否控制。
    good1uck
        76
    good1uck  
       2019-08-14 02:14:51 +08:00 via Android
    稍微动动脑子想想 linus 能做 你就做不得?
    这套逻辑牛批 简直没有做不了的事了
    IDCFAN
        77
    IDCFAN  
       2019-08-14 05:17:33 +08:00 via iPhone
    楼主说的没错,技术不是问题,特别是在这种举国体制下
    wyfyw
        78
    wyfyw  
       2019-08-14 07:21:36 +08:00
    稍微动动脑子想想 linus 能做 你就做不得?—— LoL

    你看看当年 Linus 写的代码 Linux 内核 0.01 和现代的 Linux 内核的差距。如果想另立门户,搞一个完善的操作系统,人月神话了解一下。
    liuxey
        79
    liuxey  
       2019-08-14 08:17:19 +08:00   ❤️ 2
    平平无奇 Linus, 无利起早 Bill Gates
    murmur
        80
    murmur  
       2019-08-14 08:20:27 +08:00
    @Buges 不在兼容 exe 咋了,多少 xp 还在跑,win7 的网吧都不准备换了,win10 按这个架势保守再战 20 年
    padeoe
        81
    padeoe  
       2019-08-14 09:09:35 +08:00
    还真是技术问题啊,软件工程问题,不是会写代码就是有技术,设计和管理好大的软件项目也是技术,参考国产操作系统的历史,以及国内开源项目现状
    sheny
        82
    sheny  
       2019-08-14 09:34:26 +08:00
    有钱能解决一切,解决不了只因钱不够,楼主解决钱就行( doge
    bulldozer
        83
    bulldozer  
       2019-08-14 09:52:11 +08:00
    很多老板也是这么想的,技术算个屁啊。钱到位什么都能做出来,拳打 BAT,脚踢 FANG。当然多年的抄袭以及政策壁垒导致的部分成功更刺激了这种骄横心态。实际上不是这么回事。

    另外,对操作系统而言,生态指的不光是运行其上的 APP, 是从 CPU 开始的,所有的上下游软硬件厂商的协作环境,以及技术共享、标准共享,可以说,在中国的环境下几乎没有可能制造出一个通用的、全平台 OS.
    openbsd
        84
    openbsd  
       2019-08-14 11:06:49 +08:00
    LZ 是不是对“技术含量”有点误解?
    造出原子弹和送火箭上天 的技术投入比任何一个能经过考验的通用操作系统都要少太多吧
    darmau
        85
    darmau  
       2019-08-14 11:06:52 +08:00
    @liprais 你能三十天做个玩具原子弹出来吗?玩具汽车(能载人)?
    oshio
        86
    oshio  
       2019-08-14 11:37:13 +08:00
    远古时期的 os 基本都是一个人搞起来的呀,unix,cp/m,qdos,linux,minix,这些还都是正儿八经的通用操作系统,也不是玩具 demo。
    icy37785
        87
    icy37785  
       2019-08-14 11:40:54 +08:00 via iPhone
    @oshio #84 远古时期的操作系统用现在的眼光看就是玩具呀
    icy37785
        88
    icy37785  
       2019-08-14 11:41:36 +08:00 via iPhone
    生态是问题,技术也是问题,只是先得解决了技术问题才有资格面对生态问题。做操作系统真的很难。
    jay4497
        89
    jay4497  
       2019-08-14 11:41:54 +08:00
    楼主观点没问题,生态最重要完全没错的,只是技术到底占多少可能还待商榷。
    倪光南不就早搞过操作系统了,还找人测试,最后不还是生态起不来不了了之。。。
    damngood
        90
    damngood  
       2019-08-14 11:55:34 +08:00 via iPhone
    生态起不起得来也取决于你系统做得好不好,系统越差生态越难起来
    damngood
        91
    damngood  
       2019-08-14 11:57:37 +08:00 via iPhone
    现在的瓶颈都还没到生态这步吧,先搞出系统再来说
    别目前做个好系统的能力都不一定有就说我不做是因为生态难
    mnssbe
        92
    mnssbe  
       2019-08-14 12:11:09 +08:00
    @seraphv3 21 天精通 c++了解一下
    kppwp
        93
    kppwp  
       2019-08-14 12:59:59 +08:00 via iPhone
    @anguiao 有一说一 linux 的 gui 纯粹是因为开发者在扯皮和摸鱼所以进展缓慢以至于可以说退步...
    oshio
        94
    oshio  
       2019-08-14 16:43:19 +08:00
    操作系统从技术上真没那么难,操作系统严格来说不是难(至少不是相对论,黎曼猜想那种难),是复杂,这种复杂一定程度上是可以分解的。

    单从技术层面,就算华为,或者全中国的技术的不行,那 nokia,黑莓,palm,微软也是连开发现代手机系统的技术都没有吗?如果是觉得这些是过时的公司了,facebook,amazon 不开发操作系统,你们真的认为是没有开发操作系统的技术吗?
    dreamage
        95
    dreamage  
       2019-08-14 17:25:54 +08:00
    那是啥问题 键盘问题?
    ryd994
        96
    ryd994  
       2019-08-15 10:22:46 +08:00 via Android
    @oshio 这是典型的人月神话思路
    诺基亚是首先没有追上智能机的潮流,然后被微软收购后又被 wp 坑了一把。黑莓其实也是被智能机挤下去了而已。只是上层应用失误,无法变现。开发智能机并不一定需要重写内核。
    oshio
        97
    oshio  
       2019-08-15 11:36:36 +08:00
    @ryd994
    symbian,meego,BlackBerry OS,plam,windows mobile (现在还有人记得多普达吗),windows ce (猜猜魅族第一款手机是什么系统),windows phone,虽然这些都凉透了,但都是智能机系统,有些当年还如日中天。

    如果人月神话是绝对真理,我用 100 人精英团队开发了十年,你是就算用 1000 个同样的精英,也得差不多十年,那么在这些系统已经积攒下大量技术优势的情况下,android ios 又是如何突破人月限制,后来居上的呢?又有什么技术限制了 facebook,amazon 不能再来一次呢?如果说是这些公司都是因为技术上犯错才被超越,那么 apple google 就一定不会重蹈覆辙呢?
    ryd994
        98
    ryd994  
       2019-08-15 15:31:10 +08:00 via Android   ❤️ 1
    @oshio 1. 人月神话是一种谬误,能把人月神话理解成某种真理的,你先去读过这本书再说。整本书通篇都在批人月神话思维。
    2. 安卓用的是 Linux 内核。安卓核心代码是 Dalvik,当然这个后来也换了。Linux 提供广泛的硬件支持,Dalvik 确保应用独立于硬件,到处可用。这是安卓相比塞班最大的优势。Dalvik 当然也不简单,但是并不是内核,只是一个比较特别的 runtime 而已。
    3.没有任何技术限制。但是任何事情不是只靠想就能做到的。大公司想做什么,都可以砸钱,不过砸钱也不代表立刻就能有,这就叫人月神话。
    4. 前述,重申,如果不包括内核,而只是一个比较特别的发行版,那我一点都不会觉得奇怪
    Facebook 搞 hhvm,Amazon 搞虚拟化,这些都是已经出了成果的。为什么不搞内核,因为从头搞个新内核真的太贵了。何不专注自己擅长的领域?商业公司要恰饭的啊。
    5.苹果虽然 osx/ios 是基于 bsd,但实际上有相当多的改动。当年搞 osx 就留下人员和经验了,那再搞个 ios 也不在话下。
    6. 微软搞 wince 也是同样的理由,然而起得太晚,连晚集都没赶上。这恰恰是一个不应该随便自创内核的例子。因为就算自创了内核,上层的各种库各种 app 没到位,一样完蛋。而且自创内核会浪费太多时间。
    7.综上,如果说华为的新系统是基于 aosp,我不会觉得丢人。但是非要说连内核都是完全自主,我很怀疑到底有多少是真的自主。像楼主那样张口闭口就是 30 天自制操作系统,吊打 Windows/Unix-like,这就叫外行看热闹。
    oshio
        99
    oshio  
       2019-08-15 21:06:14 +08:00
    @ryd994 忘了给人月神话加上书名号了。

    最重要的是,我觉得不能因为现在手机系统都是基于 inux/unix,就认为只有这俩适合,毕竟这俩最初的目标都不是手机。这些公司选择内核时,有一个凑合能用的,自然不会从头再来去开发一个新的,但这不意味着他们选择的就是最合适的(比如微软),或者他们没有技术能力开发一个。随着物联网的发展,针对这些设备的特点,开发更合适的操作系统的需求我觉得是存在的,只要有需求,技术应该不会是最大的问题,当然这都是猜测。

    至于华为,看 ppt 是要分几步走的,最终是要自己的内核的,至于是吹牛还是真有,那就不得而知了。
    ryd994
        100
    ryd994  
       2019-08-16 01:15:05 +08:00 via Android
    @oshio Linux 根据编译参数不同,下可嵌入式,上可超算,对付个手机还是绰绰有余。
    嵌入式早就有嵌入式的系统了,比如
    便宜的嵌入式没系统,比如单片机。
    高级的用 rtos 因为需要实时性。Linux 也有编译成实时的选项,但和真正 rtos 比还是不一样的。
    需要开发方便的用 Linux,因为这类一般是常见的指令集。可以直接用编译好的各类 Unix 工具。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4188 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 05:27 · PVG 13:27 · LAX 21:27 · JFK 00:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.