配置语言的 5 个级别

主要观点:代码即数据,数据即代码。多年前接触 Lisp 时学到这一理念,如今认为分离代码和数据有好处。讨论新配置模式语法时会出现相关争论,配置语言有 5 个级别。
关键信息:

  • 5 个配置语言级别:字符串文件(如 /proc/sys 中的内容)、列表(如含不同格式的配置文件)、嵌套数据结构(如 JSON 等)、全编程语言(如 XSLT、Jsonnet 等)、完整编程语言(如 Python 等脚本语言)。
  • 各级别特点及示例:字符串文件最简单;列表稍复杂,需注意约束;嵌套数据结构流行但有计算限制;全编程语言可计算但不流行;完整编程语言 Turing 完备但易产生循环依赖。
  • 指导原则是使用最低级别保持简单,避免在同一级别内浪费时间讨论。
    重要细节:
  • Linux 内核通过 procfs 和 sysfs 以文件系统作为键值存储;列表格式多样,如每行一个元素等,且要注意不能有列表的列表;XML 虽不“酷”但工具支持好;全编程语言如 Starlark 在 Bazel 中的示例;Python 在 Conan 中的配置示例及存在的循环依赖问题等。
    讨论链接:在 lobste.rs 上有讨论及精彩评论,在 hacker.news 上有更多语言讨论。
阅读 26
0 条评论