理念
核心价值
Nu 的核心价值是在 shell 中工作应该是有趣的。为了支持这一点,我们相信:
- 现代 shell 应该为可用性和人体工程学而设计。最重要的是,Nu 应该使用起来有趣。
- 当命令无法正确成功时,它应该提供很好的信息性错误消息。这至关重要。一个有趣的 shell 提供清晰、可操作的错误。
- 它应该围绕支持休闲使用而构建,因为这是 shell 中的主要用途,即使是有经验的用户也是如此。构建一个对休闲使用有趣的 shell 会让每个人都觉得有趣。
- Nu 支持实验和将想法从实验发展为程序。将想法演变为单行命令、脚本,然后发展为程序的能力是 shell 扮演的关键角色。为了支持这一点,Nu 建立在可组合命令的概念之上,这些命令在共享的数据类型集上工作。
非目标
- 最优性能。虽然我们关心性能,但对性能的关注应该服务于使 Nu 更可用和更愉快地使用。微基准测试上的最佳性能是一个非目标。
- 严格性。我们想帮助用户编写好的脚本,但我们应该专注于帮助他们编写正确的脚本,提供良好的错误和良好的文档。
- POSIX 兼容性。Nu 有意优化为愉快的体验,而不是匹配命令行程序在 POSIX 兼容方式下的工作方式。能够在 Nu 命令和外部命令之间互操作很重要,但保持严格兼容性是一个非目标。
- 范式坚持。Nu 灵活地看待 shell 空间,并在可能的情况下从函数式编程、系统编程、OOP 等中借鉴好的想法。严格遵循任何特定范式都不符合 Nu 项目的目标。
基本设计
Nu 设计的核心是数据模型。命令主要服务于使创建数据、处理数据和查看数据变得容易。这项工作的一个可见部分是管道,它大量借鉴了原始 Unix 将简单程序连接成更复杂命令的思想。Nu 采用这种 Unix 哲学,并将其从仅字符串扩展到现代编程语言中更常见的数据集。