世间之痛,无非一个悔字。其实选错了就是选错了,不要一遍一遍的后悔,总寻思着如果当初怎么样就好了,就算可以重来,以你当时的阅历和心态,你还是会选择那条不完美的路。人生如棋,落子无悔,抉择本身就是向前,所以不要美化那条你从来没有选过的路。人一定要具有翻篇儿的能力,过去的就让他过去,拿得起你放得下,不消耗自己,你别委曲求全,不依不饶就是画地为牢。这个世界上没有真正快乐的人,只有想得开的人。世间万物都在治愈你,只有你不肯放过自己。要永远相信,所有山穷水尽都藏着风回路转,就算是一地鸡毛,那你也可以搓出一个鸡毛掸子来啊。
操作系统老兵:软件生态为什么难度这么大?
很多没做过操作系统的,很容易受到抖音民族情绪渲染调动,就认为只要有人就可以把操作系统干好,真实的软件生态要比你想象的难很多。
为了方便大家理解,我尽量简化其中的逻辑,只说我几十年经验的结论。
操作系统的生态主要有5个方面:
1. 芯片
2. 编译器
3. 基础软件组件
4. 操作系统
5. 关键软件生态
芯片最难的其实不仅仅是大家熟知的制程和工艺,最难的是指令集。一个不开放的指令集,会导致很多开源软件的代码分支没有这种指令集。而现代操作系统早已离不开开源软件,没有对应的指令集,基本上就要对每个开源组件都手动增加指令集分支的代码,而指令集分支的代码是大量的 #ifdef 代码,50个人折腾一年后,一旦上游软件改了代码,手动迁移适配的工作量极大,就像一提花生一样,一环套一环。大家说,为什么不贡献设备到开源社区?因为一个用的很少的芯片,对于上游开发者也是负担,没人用,每天还要维护这个分支的代码,累。
编译器是开源社区很难理解的难,因为编译器和芯片指令集是绑定的。开源社区大家升级GCC版本觉得很简单,但是一个新的芯片的编译器和芯片的指令集相关。因为你芯片做了任何创新,比如多媒体指令,向量加速指令,AI算子加速指令等等。这些都需要通过编译器翻译,才能让软件用得上这些指令集。所以,你要大量改GCC,让软件编译的时候自动能用上这些新的指令集,这里工作量巨大。最难的还不是这里,而是GCC影响的底层软件太多了,不能有bug,如果有bug会导致你以前编译的软件要全部重新编译,不要问我为什么知道,说多都是泪。 操作系统的基础软件重新编译一遍最少需要1个月的时间,比LFS难一万倍。
基础软件组件,比如性能分析工具、浏览器引擎、Python、各种数学库。基础软件最麻烦的就是这些带数学库的软件,现代很多先进编程语言的指令集优化不受GCC影响,比如golang,haskell都自带编译器和数学库,这些语言的移植和上面GCC一样难,需要既懂X86指令集,又要懂新的芯片指令集,还需要熟悉新的编程语言,还要数学功底强。虽然没有GCC影响面大,但是工作量非常大,专业编译器团队也要花一年时间才能稳定一个版本。
操作系统相对于前面三个来说,虽然底层难度不大,但是上层的难度在于应用软件的支持和用户习惯。想要说服成千上万的软件厂商维护你操作系统的版本非常难,你首先要证明你用户量大,否则没人支持。 而你面对的是先有鸡还是先有蛋的问题。而自己造的话,只能造一些通用软件。比如专业点的,Office、CAD、PS等,操作系统厂商本身也不专业,因为你软件工程能力再强,也缺乏这些行业多年的行业认知。
关键基础软件生态,最典型就是类似CUDA这种护城河。即使你跨越了前面几座高山,每座高山都损失30%的性能,到了专业赛道以后,想要弯道超车非常非常的难。因为别人用CUDA搞钱,你想要别人当小白鼠,基本没人会理你。
而操作系统软件生态最难的是,用户和行业的习惯,他们习惯于某一个生态的文档,习惯于出了问题网上可以抄答案。 来到一个新的生态, 99%的厂商都没有底层软件调试能力,一个出错可以保证你全网都没有一篇解决方案,最后生态合作伙伴的老板每天思考的问题是,等你平台跑起来,我都饿死了。
所以,操作系统的软件生态发展只有两条路:
1. 浪潮: 新的赛道,新的浪潮,所有人都是0起步,只要可以赚钱,再烂的操作系统都有人用,比如智能手表,智能门锁,电动汽车等
2. 补贴: 国家巨大的补贴,生态发展起来了给国家省钱和增加贸易谈判筹码,但是结果大家也知道,补贴的市场容易缺乏长远竞争力
懒猫微服的操作系统是我们耗时3年研发,瞄准家庭服务器和AI Agent赛道,三层操作系统架构设计,怎么折腾都不会挂,商店1000多个应用,好玩好用。
很多没做过操作系统的,很容易受到抖音民族情绪渲染调动,就认为只要有人就可以把操作系统干好,真实的软件生态要比你想象的难很多。
为了方便大家理解,我尽量简化其中的逻辑,只说我几十年经验的结论。
操作系统的生态主要有5个方面:
1. 芯片
2. 编译器
3. 基础软件组件
4. 操作系统
5. 关键软件生态
芯片最难的其实不仅仅是大家熟知的制程和工艺,最难的是指令集。一个不开放的指令集,会导致很多开源软件的代码分支没有这种指令集。而现代操作系统早已离不开开源软件,没有对应的指令集,基本上就要对每个开源组件都手动增加指令集分支的代码,而指令集分支的代码是大量的 #ifdef 代码,50个人折腾一年后,一旦上游软件改了代码,手动迁移适配的工作量极大,就像一提花生一样,一环套一环。大家说,为什么不贡献设备到开源社区?因为一个用的很少的芯片,对于上游开发者也是负担,没人用,每天还要维护这个分支的代码,累。
编译器是开源社区很难理解的难,因为编译器和芯片指令集是绑定的。开源社区大家升级GCC版本觉得很简单,但是一个新的芯片的编译器和芯片的指令集相关。因为你芯片做了任何创新,比如多媒体指令,向量加速指令,AI算子加速指令等等。这些都需要通过编译器翻译,才能让软件用得上这些指令集。所以,你要大量改GCC,让软件编译的时候自动能用上这些新的指令集,这里工作量巨大。最难的还不是这里,而是GCC影响的底层软件太多了,不能有bug,如果有bug会导致你以前编译的软件要全部重新编译,不要问我为什么知道,说多都是泪。 操作系统的基础软件重新编译一遍最少需要1个月的时间,比LFS难一万倍。
基础软件组件,比如性能分析工具、浏览器引擎、Python、各种数学库。基础软件最麻烦的就是这些带数学库的软件,现代很多先进编程语言的指令集优化不受GCC影响,比如golang,haskell都自带编译器和数学库,这些语言的移植和上面GCC一样难,需要既懂X86指令集,又要懂新的芯片指令集,还需要熟悉新的编程语言,还要数学功底强。虽然没有GCC影响面大,但是工作量非常大,专业编译器团队也要花一年时间才能稳定一个版本。
操作系统相对于前面三个来说,虽然底层难度不大,但是上层的难度在于应用软件的支持和用户习惯。想要说服成千上万的软件厂商维护你操作系统的版本非常难,你首先要证明你用户量大,否则没人支持。 而你面对的是先有鸡还是先有蛋的问题。而自己造的话,只能造一些通用软件。比如专业点的,Office、CAD、PS等,操作系统厂商本身也不专业,因为你软件工程能力再强,也缺乏这些行业多年的行业认知。
关键基础软件生态,最典型就是类似CUDA这种护城河。即使你跨越了前面几座高山,每座高山都损失30%的性能,到了专业赛道以后,想要弯道超车非常非常的难。因为别人用CUDA搞钱,你想要别人当小白鼠,基本没人会理你。
而操作系统软件生态最难的是,用户和行业的习惯,他们习惯于某一个生态的文档,习惯于出了问题网上可以抄答案。 来到一个新的生态, 99%的厂商都没有底层软件调试能力,一个出错可以保证你全网都没有一篇解决方案,最后生态合作伙伴的老板每天思考的问题是,等你平台跑起来,我都饿死了。
所以,操作系统的软件生态发展只有两条路:
1. 浪潮: 新的赛道,新的浪潮,所有人都是0起步,只要可以赚钱,再烂的操作系统都有人用,比如智能手表,智能门锁,电动汽车等
2. 补贴: 国家巨大的补贴,生态发展起来了给国家省钱和增加贸易谈判筹码,但是结果大家也知道,补贴的市场容易缺乏长远竞争力
懒猫微服的操作系统是我们耗时3年研发,瞄准家庭服务器和AI Agent赛道,三层操作系统架构设计,怎么折腾都不会挂,商店1000多个应用,好玩好用。
对照日本史料:看国共战报的水分
根据战后日本防卫厅及日本学者有关著作提供的资料,现将八年抗战期间,国军和八路军毙伤日寇最多的各7次战役(斗)资料摘录如下,供有兴趣的网友一阅。从资料中可以看到:国军战报跟日本人自己的统计基本相符;八路军战报与日本人自己的统计差距较大。
一、国军对日作 战毙伤日寇10万人以上的7次战役。
1.武汉会战
国军战报:毙伤日寇25万余人。
日寇战报:伤亡23万余人,因病减员6.7万余人(日本防卫厅《中国事变陆军作战史》)。
2.凇沪会战
国军战报:毙伤日寇16万余人。
日寇战报:死亡16万人,伤31157人(日本防卫厅《中国事变陆军作战史》)。
3.长衡会战
国军战报:毙伤日寇16万余人。
日寇战报:伤亡15.2万余人(日本防卫厅《中国事变陆军作战史》)。
4.第三次长沙会战
国军战报:毙伤日寇15万余人。
日寇战报:伤亡14.6万人(日本防卫厅《中国事变陆军作战史》)。
5.徐州会战
国军战报:毙伤日寇15万余人 。
日寇战报:在1937年公开承认伤亡13.2万余人。
6.随枣会战
国军战报:毙伤日寇14万余人 。
日寇战报:伤亡13万余人(日本防卫厅《中国事变陆军作战史》)。
7.南京保卫战
国军战报:毙伤日寇11.3万余人。
日寇战报:伤亡10.6万余人(日本防卫厅《中国事变陆军作战史》)。
二、八路军对日作战毙伤日寇100人以上的7次着名战斗。
1.百团大战
八路军战报:毙伤日军2万余人、伪军5000余人,俘日军280余人、伪军1.8万余人。
日寇战报:亡302人,伤1719人,皇协军伤亡失踪1202人(日本防卫厅《华北治安战》)。
2.平型关大捷
八路军战报:歼灭日军1000余人 。
日寇战报:亡167人,伤94人(儿岛襄《日中战争》)。
3.晋察冀区1938年秋反围攻
八路军战报:毙伤日伪军5000余人。
日寇战报:亡39人,伤132人,皇协军伤亡107人(臼井胜美《中日战争》)。
4.1939年冀南春季反十一“扫荡”
八路军战报:歼日伪军3000余人。
日寇战报:亡37人,伤70人,皇协军伤亡81人(臼井胜美《中日战争》)。
5.冀中1939年冬季反“扫荡”
八路军战报:歼日伪军2500余人。
日寇战报:亡27人,伤89人,皇协军伤亡71人(日本防卫厅《华北治安战》)。
6.冀中1940年春季反全面“扫荡”
八路军战报:毙伤日伪军3000余人。
日寇战报:亡11人,伤91人,皇协军伤亡62人(日本防卫厅《华北治安战》)。
7.115师陆房突围
八路军战报:毙伤日伪军1300余人。
日寇战报:亡10人,伤122人,皇协军伤亡67人(日本防卫厅《华北治安战》)。
根据战后日本防卫厅及日本学者有关著作提供的资料,现将八年抗战期间,国军和八路军毙伤日寇最多的各7次战役(斗)资料摘录如下,供有兴趣的网友一阅。从资料中可以看到:国军战报跟日本人自己的统计基本相符;八路军战报与日本人自己的统计差距较大。
一、国军对日作 战毙伤日寇10万人以上的7次战役。
1.武汉会战
国军战报:毙伤日寇25万余人。
日寇战报:伤亡23万余人,因病减员6.7万余人(日本防卫厅《中国事变陆军作战史》)。
2.凇沪会战
国军战报:毙伤日寇16万余人。
日寇战报:死亡16万人,伤31157人(日本防卫厅《中国事变陆军作战史》)。
3.长衡会战
国军战报:毙伤日寇16万余人。
日寇战报:伤亡15.2万余人(日本防卫厅《中国事变陆军作战史》)。
4.第三次长沙会战
国军战报:毙伤日寇15万余人。
日寇战报:伤亡14.6万人(日本防卫厅《中国事变陆军作战史》)。
5.徐州会战
国军战报:毙伤日寇15万余人 。
日寇战报:在1937年公开承认伤亡13.2万余人。
6.随枣会战
国军战报:毙伤日寇14万余人 。
日寇战报:伤亡13万余人(日本防卫厅《中国事变陆军作战史》)。
7.南京保卫战
国军战报:毙伤日寇11.3万余人。
日寇战报:伤亡10.6万余人(日本防卫厅《中国事变陆军作战史》)。
二、八路军对日作战毙伤日寇100人以上的7次着名战斗。
1.百团大战
八路军战报:毙伤日军2万余人、伪军5000余人,俘日军280余人、伪军1.8万余人。
日寇战报:亡302人,伤1719人,皇协军伤亡失踪1202人(日本防卫厅《华北治安战》)。
2.平型关大捷
八路军战报:歼灭日军1000余人 。
日寇战报:亡167人,伤94人(儿岛襄《日中战争》)。
3.晋察冀区1938年秋反围攻
八路军战报:毙伤日伪军5000余人。
日寇战报:亡39人,伤132人,皇协军伤亡107人(臼井胜美《中日战争》)。
4.1939年冀南春季反十一“扫荡”
八路军战报:歼日伪军3000余人。
日寇战报:亡37人,伤70人,皇协军伤亡81人(臼井胜美《中日战争》)。
5.冀中1939年冬季反“扫荡”
八路军战报:歼日伪军2500余人。
日寇战报:亡27人,伤89人,皇协军伤亡71人(日本防卫厅《华北治安战》)。
6.冀中1940年春季反全面“扫荡”
八路军战报:毙伤日伪军3000余人。
日寇战报:亡11人,伤91人,皇协军伤亡62人(日本防卫厅《华北治安战》)。
7.115师陆房突围
八路军战报:毙伤日伪军1300余人。
日寇战报:亡10人,伤122人,皇协军伤亡67人(日本防卫厅《华北治安战》)。
要大胆的去按照你自己的直觉去行动,你要学会用真实的世觉的反馈来去校准你的直觉,久而久之你就会变得非常的敏锐,你认定的时候就立马去做,你的那个反射的回路会变常快,而且会很精准。如果说一开始那个结果是不尽如人意的,你要学会去平静的面对自己的那个浊,你就是那份儿笨,要去接受现实的打脸,养成新的条件反射这个东西好过你无数次的躺在床上那个演算和鸡汤式的喊话。我们要积极的去寻找真实的反馈,要去主动浪费时间跟金钱去购买这种反馈,哪怕这个过程是极痛苦的,因为这些东西将彻底的定义你是谁,说白了就是有什么思想就有什么结果,有人的思想,你就有人的结果,有植物的思想,你就只有植物的结果。