主要观点:代码即数据,数据即代码。多年前接触 Lisp 时学到这一理念,如今认为分离代码和数据有好处。讨论新配置模式语法时会出现相关争论,配置语言有 5 个级别。
关键信息:
- 5 个配置语言级别:字符串文件(如 /proc/sys 中的内容)、列表(如含不同格式的配置文件)、嵌套数据结构(如 JSON 等)、全编程语言(如 XSLT、Jsonnet 等)、完整编程语言(如 Python 等脚本语言)。
- 各级别特点及示例:字符串文件最简单;列表稍复杂,需注意约束;嵌套数据结构流行但有计算限制;全编程语言可计算但不流行;完整编程语言 Turing 完备但易产生循环依赖。
- 指导原则是使用最低级别保持简单,避免在同一级别内浪费时间讨论。
重要细节: - Linux 内核通过 procfs 和 sysfs 以文件系统作为键值存储;列表格式多样,如每行一个元素等,且要注意不能有列表的列表;XML 虽不“酷”但工具支持好;全编程语言如 Starlark 在 Bazel 中的示例;Python 在 Conan 中的配置示例及存在的循环依赖问题等。
讨论链接:在 lobste.rs 上有讨论及精彩评论,在 hacker.news 上有更多语言讨论。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。