标签 Rust 下的文章

内核之外的冰山:为什么说从零写一个操作系统已几乎不可能?

本文永久链接 – https://tonybai.com/2025/08/16/brand-new-os-impossible

大家好,我是Tony Bai。

对于许多心怀浪漫主义的开发者来说,“从零开始编写一个属于自己的操作系统”,或许是技术生涯中最终极、最性感的梦想。这几乎是现代编程世界的“创世纪”,是掌控计算机每一个比特的至高权力。

然而,最近一位名为 Wildan M 的工程师,在他的一篇博文中,用一次亲身参与 Redox OS 项目的经历,给我们所有人泼了一盆冷水。他的结论简单而又颠覆:

现在,从零开始编写一个全新的、能被广泛采用的操作系统,已几乎是一项不可能完成的任务。

而其真正的难点,并非我们想象中那个神秘而复杂的内核,而在于内核之外,那座看不见的、庞大到令人绝望的“冰山”。

冰山一角:内核,那个“最简单”的部分

故事的主角是 Redox OS,一个雄心勃勃的项目。它旨在用内存安全的 Rust 语言,构建一个现代的、基于微内核架构的、可以替代 Linux 和 BSD 的完整操作系统。

当我们谈论“写一个 OS”时,我们通常指的是编写内核。那么 Redox OS 的内核有多复杂呢?文章给出了惊人的数据:
* 代码量: 约 3 万行 (30k LoC)。
* 启动速度: 大多数情况下,不到 1 秒。

在短短十年间,Redox 团队已经完成了动态链接、Unix 套接字等核心功能。这无疑是令人敬佩的工程壮举。但 Wildan 指出,这仅仅是浮出水面的冰山一角。一个能启动的内核,距离一个“能用”的操作系统,还有着遥远的距离。

冰山之下:生态移植的“五层地狱”

当作者兴致勃勃地想为 Redox OS 贡献力量,尝试将一些现代程序(如 Go, Node.js, Rust 编译器)移植上去时,他才真正撞上了那座隐藏在水面之下的巨大冰山。

一个现代操作系统之所以“能用”,是因为它能运行我们日常使用的所有软件。而将这些软件“搬”到一个全新的操作系统上,需要闯过一重又一重难关。

第一层:系统调用 (Syscall) 的鸿沟

这是最底层的障碍。每个操作系统都有自己的一套与硬件和内核交互的“语言”,即系统调用。Redox OS 的 syscall 与我们熟知的 Linux 完全不同。这意味着,任何需要与内核打交道的程序(几乎是所有程序),都必须重写这部分逻辑,告诉它如何在新世界里“说话”。

第二层:libc 的重担

为了不让每个程序都去痛苦地学习 syscall 这门“方言”,操作系统通常会提供一个标准的“翻译官”——C 标准库 (libc)。它将复杂的 syscall 封装成开发者熟悉的函数(如 printf, open, read)。因此,一个新 OS 的核心任务之一,就是自己实现一个兼容的 libc。Redox 为此用 Rust 实现了一个名为 relibc 的项目,其工程量之浩大可想而知。

第三层:POSIX 的“几乎兼容”陷阱

即便新 OS 像 Redox 一样,努力兼容 POSIX 这个通用标准,噩梦也远未结束。因为无数现有的软件,早已深度依赖于 Linux 特有的、非 POSIX 的功能,比如解析 /proc 文件系统、操作 cgroups 等。结果就是,即使有了 relibc,你依然需要为这些软件挨个打上无数的“补丁”。文章提到,仅 Redox OS 的官方“软件食谱 (Cookbook)”中,就包含了约 70 个这样的补丁。

第四层:编译器的“先有鸡还是先有蛋”

你想在新 OS 上原生编译软件吗?那你首先需要一个能在这个 OS 上运行的编译器,比如 GCC、Rustc 或 Go 编译器。但问题是,移植编译器本身,就是所有软件移植任务中最复杂、最艰巨的一种。它需要处理极其底层的二进制格式、链接方式和系统调用。这形成了一个经典的“鸡生蛋还是蛋生鸡”的困局。

第五层:语言生态的“次元壁”

如果说移植 C 语言程序还只是“困难模式”,那么移植那些拥有自己庞大生态的现代语言程序(如 Rust, Go, Node.js),则是“地狱模式”。这些语言的包管理器(如 Cargo, Go Modules)会从中央仓库下载海量依赖,你很难像修改 C 代码一样,通过一个简单的 .patch 文件来修复所有问题。唯一的办法,往往是去 fork 无数个核心依赖库,然后逐一修改,这几乎是一项不可能完成的任务。

小结:生态,才是那座无法逾越的山

当 Wildan 经历过这一切后,他得出了文章开头的那个结论。

一个操作系统的成功,或许 20% 在于内核的精巧,而 80% 在于其上能否运行用户想要的所有软件。 后者,那个由编译器、标准库、第三方包、应用软件共同构成的庞大生态,才是真正的、几乎无法被复制的“护城河”。

这就像建造一座城市。你可以设计出最宏伟、最先进的市政厅(内核),但如果没有配套的道路、水电、学校、医院、商店(软件生态),这座城市就永远只是一座无法住人的“鬼城”。

这篇文章并非是要劝退所有对底层技术抱有热情的开发者。正如作者所说,如果你想学习,从零开始或加入 Redox 这样的项目,会是一段极其宝贵的经历。但如果你想构建一个被广泛采用的新 OS,你面对的将不仅仅是技术挑战,更是一个需要说服全球成千上万开发者为你“投票”的社会学难题。

这或许就是对那些仍在坚持构建新 OS 的探索者们,我们应该报以最高敬意的原因。因为他们挑战的,不仅仅是代码,更是一整个时代建立起来的软件文明。

资料链接:https://blog.wellosoft.net/writing-a-brand-new-os-is-almost-impossible-by-now


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

AI正在重塑编程语言格局:Rust、Python 和 TypeScript 真是最终赢家吗?

本文永久链接 – https://tonybai.com/2025/08/14/rs-py-ts-trifecta

大家好,我是Tony Bai。

在 AI 浪潮席卷而来的今天,一个深刻的问题正摆在所有开发者面前:我们手中的编程语言,将如何被这股力量重塑?我们未来的技能投资,应该押注在哪里?

最近,Rust 核心团队的 Niko Matsakis,在他的一篇博文中给出了一个大胆的预测:Rust、Python 和 TypeScript 将成为未来的主导语言(移动端除外),形成新的“三驾马车”。

他的核心论点极具说服力:AI 正在削弱我们的“语言忠诚度”。过去,我们选择最熟悉的语言以求最快,因为学习新语言和其生态的成本太高。但现在,AI 正在改变这一切。

Niko 写道:“当我使用 AI 助手构建项目时,我的思维方式不同了。我更多地考虑有哪些库可用,我的基本性能需求是什么,以及我期望与哪些平台集成。” 换言之,AI 正在帮助我们克服学习曲线的“坑”,让我们得以回归本源,为任务选择“基础最扎实”的语言。

而这“三驾马车”,恰好占据了最关键的生态位:

  • Rust: 系统与性能的基石,以其无与伦比的内存安全和效率成为底层开发的首选。
  • Python: 数据与实验的引擎,凭借其在科学计算和机器学习领域的绝对统治力,主导原型设计和数据应用。
  • TypeScript: Web 与应用的界面,作为 Web 的“母语”,在浏览器和众多跨平台应用中拥有不可替代的地位。

这个预测听起来逻辑严谨,几乎无懈可击。然而,当我们把目光从理想的“基础”,转向现实世界的复杂工程实践时,一些强大的“挑战者”浮出水面,它们的故事,同样值得倾听。

一种新的编程范式:“想法导向编程”

在深入辩论之前,我们必须先理解 Niko 提出的一个核心概念,它支撑着整个预测的基石——“想法导向编程” (Idea-Oriented Programming, IOP)

这并非是那种懒散、模糊地对 AI 说“给我做个XX”的“氛围编程 (Vibe Coding)”。IOP 是一种严谨的编程范式,它重新定义了人与 AI 的关系:

“开发者更像是首席架构师,而你的编码工具就像是你的学徒。你思考目标和关键设计,制定清晰的计划,并将重活累活授权给工具——然后你审查它们的产出,并进行调整。”

在这种模式下,AI 不是“神灯精灵”,而是你的“学徒”。它负责处理繁琐的实现细节,而你,则被解放出来,专注于更高层次的、创造性的工作。正是这种角色的转变,使得“语言基础”变得比“个人熟练度”更重要。

然而,这个看似完美的预测,真的无懈可击吗?

挑战者一:Go 语言的“反击”——简洁即力量

Niko 的预测,似乎忽略了一个在工程效率中至关重要的因素——简单性 (Simplicity)。而这,正是 Go 语言的立身之本。

1. 真正的“AI 友好”: Niko 强调,强大的类型系统对 AI 来说是至关重要的“护栏”。这一点毋庸置疑。但 AI 同样面临“认知负荷”的问题。AI 极其擅长生成 Go 这种规则简单、没有“魔法”、风格统一的样板代码。但让 AI 完美处理 Rust 复杂的生命周期和所有权,或者 TypeScript 中层出不穷的类型体操,至今仍是一个巨大的挑战。在未来“人机协作审查”的开发模式下,哪种语言对审查者更友好?答案不言而喻。

2. 工程效率的真谛: AI 能加速“编码”,但无法加速“决策”。Go 强大的标准库和“小而美”的生态,为开发者提供了一条清晰的“默认路径”,极大地避免了在技术选型上陷入“分析瘫痪”。在一个团队中,这种由简洁性带来的决策效率和低认知负荷,是实实在在的生产力。

3. 并发模型的优势: 在云原生和后端服务的核心地带,Go 的 Goroutine + Channel 并发模型,其简单性和在高 I/O 吞吐场景下的卓越表现,依然是难以被撼动的“杀手锏”。

Go 语言似乎在用它的整个设计哲学反问:当 AI 能处理大部分实现细节时,我们人类开发者最宝贵的资源——注意力——应该花在与语言的复杂性搏斗上,还是花在业务逻辑和系统设计上?

挑战者二:Java/JVM 生态的“护城河”——惯性即引力

Niko 的预测,也可能低估了企业级市场的惯性,以及 JVM 生态那深不见底的“护城河”。

1. 庞大的生态与人才库: 全球数百万的 Java 开发者,以及由 Spring 等框架构建起来的、支撑着全球无数核心业务的庞大系统,不会在一夜之间消失。AI 或许能帮你写一个 CRUD,但无法替代一个经验丰富的架构师来驾驭一个复杂的企业级系统。

2. 虚拟机的力量: JVM 本身就是一层极其强大的抽象。它提供了无与伦比的跨平台能力、经过数十年优化的运行时性能、以及一整套成熟到“令人发指”的调试、监控和性能分析工具。对于追求长期稳定和可维护性的大型企业来说,这种确定性本身就是一种最“扎实”的基础。

3. 新语言的活力: 别忘了,JVM 生态并非只有 Java。像 Kotlin、Scala和Clojure 这样的现代化语言,既享受了 JVM 的全部生态红利,又提供了强大的类型系统和函数式编程能力,它们同样是“三驾马车”的有力竞争者。

在追求“基础扎实”的企业世界里,Java/JVM 生态的稳定性和成熟度,本身就是一种难以被轻易取代的引力。

小结:一场关于“什么最重要”的伟大辩论

Niko 的预测,与其说是一个结论,不如说它开启了一场关于“AI 时代,什么才是最重要的语言特性”的伟大辩论。

  • “三驾马车”的拥护者认为: 是强大的类型系统和繁荣的库生态,它们为 AI 提供了最坚实的基础和最丰富的工具。
  • Go 的支持者反驳道: 是极致的简洁性低认知负荷,它们将人类从复杂性中解放出来,专注于创造。
  • Java/JVM 的捍卫者则强调: 是成熟的企业生态和强大的运行时,它们为关键业务提供了最需要的稳定性和确定性。

有趣的是,Niko 自己也承认,这种“想法导向编程”的角色,与大公司的“首席工程师 (Principal Engineer)”非常相似。这引出了一个新的问题:过去,首席工程师的价值在于其丰富的经验和判断力。当 AI 让所有开发者都能像 PE 一样工作时,我们又该如何培养这种宝贵的判断力?

这或许是这场变革中,留给我们的最深刻的思考题。

Rust、Python、TypeScript 组成的“专家团队”或许是一条路,但 Go 这样的“全能瑞士军刀”和 Java 这样的“企业级航母”,也同样拥有无法被忽视的优势。

唯一可以确定的是,旧的格局正在被打破。而未来的编程语言版图,将由我们每一个开发者,用自己的项目和选择,共同绘制。

你认为,在 AI 的浪潮下,哪种语言或哪种特性,才是真正的未来?欢迎在评论区留下你的看法。

资料链接:https://smallcultfollowing.com/babysteps/blog/2025/07/31/rs-py-ts-trifecta


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 AI原生开发工作流实战 Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats