作者对人工智能生成的庞大合并请求(PR)日益增多的趋势表示不满。他认为 PR 应该保持精简易读,以确保人类审查者能够真正理解并核实代码。虽然 AI 工具加快了开发速度,但它们也为维护者制造了瓶颈,因为维护者现在不得不解析成千上万行机器生成的代码。 作者驳斥了“功能无法拆分为更小提交”的借口,并强调 PR 是为了方便审查者,而不仅仅是为了交付成品功能。此外,他还批评了代码过度注释的趋势,指出描述性的变量命名优于冗长且不必要的注释。 最后,作者反对让审查者使用 AI 来“理解”庞大 PR 的建议。如果代码需要借助 AI 才能读懂,那么人类的审查过程就已被绕过或失效。作者的核心呼吁是,开发者应将可维护性和人类可读性置于 AI 输出速度之上,并警告称,将海量 PR 抛给审查者会造成不可持续且令人沮丧的工作流程。
这段文字对 RISC-V 指令集架构(ISA)进行了批判性评估,认为其流行源于“廉价”而非“优秀”。作者强调了几个根本性的设计缺陷:
* **过度可选性**:该指令集极端的模块化导致了生态系统的碎片化。由于将核心功能(如 CSR、中断和特权模式)设为可选,规范制造出了互不兼容的硬件版本,使得“标准合规”实际上毫无意义。
* **编码糟糕且效率低下**:作者批评立即数被随意分散,这增加了解码和仿真的复杂度。此外,缺失了“显而易见”的功能(如寄存器加寄存器寻址和简单的位测试指令),迫使开发者使用次优的多指令序列来完成任务。
* **标准化失败**:试图通过“配置集”(如 RVA23)来解决碎片化问题的尝试,反而创造了二级标准,进一步排挤了无法满足这些新要求的硬件。
* **结论**:作者预测 RISC-V 将凭借“价格足够好”的优势,取代 8051 等架构,从而统治低成本微控制器和嵌入式“保姆级”芯片市场;但作者认为,它在根本上不适合高性能桌面或服务器计算,因为在这些领域,AArch64 等设计更出色且成熟的架构能提供更优越的性能和软件稳定性。
Nix 的语言定义基于“惰性求值”(laziness),这意味着它仅计算被访问的特定属性。因此,开发者可以创建无限或递归的数据结构,只有在被遍历时这些结构才会“存在”。
这一特性带来了传统软件包管理之外的独特可能性。例如,在 `nes-nix` 项目中,一个属性路径(如 `.right.jump.right` 这样的序列)被视为《超级马力欧兄弟 3》的一系列输入。在这个“属性树”中,每个节点代表游戏的一帧,而每个子节点都是由按键操作产生的新状态。
由于 Nix 的派生(derivations)是可复现的并存储在 Nix 存储中,每一帧游戏画面都成为一个可缓存、可重用的派生。存储本质上充当了持久化的存档历史;从游戏序列的分支开始几乎不需要任何成本,因为之前的帧只是被引用,而无需重新模拟。
归根结底,这表明 Nix 的属性路径不仅仅是目录中的静态名称,而是函数式程序。利用该语言的惰性求值特性以及存储持久化状态的能力,人们可以将软件包管理器重新用于系统地模拟和记录复杂的、可复现的状态机。