germain
2020-11-15 13:12:13 +08:00
我稍微用 Linus 的口吻翻译了下:
Michael S 写给 Linus 的 email:
> Linus 是 Unix 死忠。我注意到,即使开发者不是 Unix 死忠,对原生开发的要求也很高。
> 对于作为在跨平台开发领域摸爬滚打一辈子的我来说,这听起来有点奇怪,但这种心态一
> 点也不稀奇。
Linus 的回复:
我差不多能确定,只要大家都做跨平台开发,这个平台就不可能稳定,也不可能成功。
很多人认为有了"云"了,就意味着指令集变的不重要了。可以在家开发好了,再上传到云端部署。
这完全是扯淡啊。如果你在 x86 上开发,那么你肯定会偏向于在 x86 上部署,因为你要让代码运行起来和你在家开发测试的时候一毛一样(我说的 "家里 "不是指字面上的家里,而是指你的工作开发环境)。
这就意味着你舍得在 x86 的云主机服务商那儿烧更多的钱,仅仅就因为它和你本地的测试环境一毛一样,可以更好的理解跳出来的错误信息排错。
同样的原因,你也会选 x86,因为即使你主要做的是一些非常极低的跨平台任务,比如只是运行 perl 脚本或其他类似的东西,仅仅因为你希望有一个尽可能相似的系统环境。
这就意味着云提供商最终会从 x86 方面赚到更多的钱,这意味着他们会优先考虑 x86,而其他所有 ARM 的相关产品都自然变成次要的了,可能会沦为低技术含量的边缘服务(也许是托管前端,也许只是静态 html,这类渣渣)。
筒子们,你们是真的不知道 x86 为什么会占领服务器市场吗?
这不仅仅是价格的问题。而是因为要"在家开发"的需求。成千上万的小公司最终把一些随机的小的内部工作负载简单的放到随便一台白盒 PC 上,然后自己还在上面运行一些很傻逼的小东西。然后随着工作负载的扩大,它就变成了一台 "真正的服务器"。然后一旦这个东西又扩大了,让别人来管理硬件和托管就突然变得很有意义了,于是云平台就接管了。
你真的不明白?这又不是特么的造火箭。这可不是我瞎扯淡编故事。这是真正发生过的事,是什么弄死了所有的 RISC 厂商,又让 x86 成为服务器中无可争议的山大王,一直到把其他友商都四舍五入灭掉。几十年前这么讲没人会相信这一切会发生。
如果没有一个开发平台,ARM 不可能在服务器领域做起来。你没有客户,却试图要销售 64-bit 的"超扩展"模型是极度愚蠢的,你没有工作量,因为在整个服务器市场定型之前你也从没卖掉过一个你的廉价小盒子。
ARM 服务器的价格优势永远不会产生,除非你获得足够的订单来弥补英特尔现在在服务器数量上的绝对优势。当在讨论大量使用 ARM 平台开发的开发成本的时候,做一个更小的裸芯片,并且有一个更便宜的 NRE,这真的一点都不重要。看看至今为止的每一款 ARM 服务器产品:它们不仅更慢,而且更贵!
而且功耗上的优势现在在很大程度上也是空谈,无论如何在系统层面上都不会有太好的表现,而且如果人们最终仅仅只是因为他们在 x86 的开发环境上开发就愿意在 x86 的平台花更多的钱,那么功耗也是没什么紧要的了。
这就使得 ARM 完全没有任何实际优势。
这是基本的经济学原理。
而改变这种情况的唯一方法就是你最终能说:"看,你可以在 ARM 机器上更加便宜地部署,这是你工作的开发机器"。
对于开发者来说,实际的硬件是非常重要的。我可以郑重申明,这就是为什么 PC 接管这个领域了,为什么其它的都玩儿完了。
所以,你可以尽情地逼逼,喊“交叉编译“,但只要你这么做,你就会被边缘化,你没有看到大局,你无视真实发生过的历史。
顺便说一句,称这是 "unixoid "的思维方式,只是说明你与现实完全脱节,加上你的论点是多么傻逼。Unix 失败了。是的,它以 Linux 的形式存活了下来,但 Unix 不仅输给了 Linux,还输给了 Windows 。事实上,严格的讲它先输给了 Windows 。
为什么呢?一毛一样的原因,只不过是在软件方面。在这两种不同的情况下。你在哪里找到的开发者?你在 Windows 和 Linux 上找到了他们,因为那是开发者可以接触到的东西。当这些工作负载升级成为“真正的”工作负载时,它们依然还在 Windows 和 Linux 上运行,它们没有被转移到 Unix 平台上,即使在 Linux 的工作负载可以很简单的迁移到 Unix 上。但是,那是完全不必要、无意义的工作。在同相同平台上继续部署下去不就行了么。
软件方面的情况和硬件方面的完全一致。当替代方案是在同一个平台上开发和部署时,交叉开发是毫无意义和愚蠢的。是的,你可以交叉开发,但一般来说你会极力的避免这么做。
最终的结果:交叉开发主要是针对那些性能很烂的平台,以至于直接在这些平台上开发毫无意义。没有人直接在嵌入式平台上做开发。但只要目标平台性能强大到能够支持原生开发,开发者就会十分纠结,因为交叉开发的模式相对来说太痛苦了。
综上所述还得出结论:同样,当在目标环境中作原生开发成本太大时,也会用交叉开发。大型机和传统的大 Unix 机的开发就是这样。但这么做严重削弱了对这些昂贵平台的支持,也相对的加强了廉价开发平台在这些领域的竞争力。
这也是 x86 获胜的原因。你不会真的以为 ARM 突然让这个世界发生了翻天覆地的变化吧?
Linus