4 个版本

0.1.3 2022 年 10 月 22 日
0.1.2 2022 年 10 月 21 日
0.1.1 2022 年 10 月 20 日
0.1.0 2022 年 10 月 20 日

#1370数据库接口

MIT 许可证

25KB
105

Metals - 可组合系统的元编程语言

Metals 是一种用于构建可组合系统的元编程语言。

它是一个库,为领域建模和模式管理提供元编程语言环境,从而能够从更简单的组件中组合复杂的系统。

该项目仍在开发中。

入门

您可以通过参考库文档来了解 metals

metals 书籍 包含了对建模的介绍,使用 metals 进行建模的指南,以及对技术和数学背景的深入探讨。

请注意,该书仍在开发中。


lib.rs:

Metals 是一种用于构建可组合系统的元编程语言。

它是一个库,为领域建模和模式管理提供元编程语言环境,从而能够从更简单的组件中组合复杂的系统。

关于计算中的领域和建模

领域是一个研究范围或领域。在计算环境中,我们感兴趣的是开发真实世界领域的计算模型,并使用这些模型来解决手头的问题。

建模或模型开发 是任何项目的第一步。它们对于利益相关者之间的沟通以及在开发过程中的使用至关重要。它们可能是正式的或非正式的,可能是文档化的或未文档化的,可能是明确的或隐含的。

模型的力量基本上决定了我们可以解决的问题类型和我们解决方案的质量。

关键思想

metals 中的领域建模能力和所需的元编程支持基于以下关键思想。

  • 简单模型,复杂领域: 基于简单规则的模型可以表现出复杂的行为。 能够建模任意复杂性的领域并不意味着模型本身必须不合理地复杂。我们努力推广简单模型。

  • 组合模型: 复杂模型是由更简单的模型组合而成的。 我们的基本信念是我们心智模型的组合性是人类认知能力非凡的基础。

  • 上下文感知计算: 除了组合性之外,上下文感知或模式相关计算是 metals 支持的计算模型最重要的方面。 在分布式、异构计算环境中尤为重要。模型不是像我们传统上在构建计算模型时假设的那样由单个系统或环境使用。

  • 组合泛化: 通过综合简单想法学习越来越复杂的概念,使学习和知识适应变得快速

我们的目标

金属提供的建模能力应满足以下目标。

  • 实现通信: 模型应作为不同团队之间,尤其是与领域专家之间的通信媒介。 我们不期望领域专家或其他开发或工程团队外的团队有任何编程专业知识,也不希望开发者离开他们选择的工具和熟悉的环境来构建通信模型。

  • 建模数据和行为: 模型应能够表示数据和相关的行为。 组合性和组合泛化应适用于数据和行为。

  • 可执行模型: 模型应该是可执行的。 应该能够在最少的努力下将通过协作建模过程开发的模型转换为可执行的工件。

  • 使非法状态不可表示: 模型应能够明确地捕获领域约束并使所有非法状态不可表示。 模型应全面、忠实地表示领域约束,以便它们可以作为关于我们需求准确性和随后实施的真实信息的单一来源。

  • 统一的结构化表示: 建模语言应支持可以在异构环境中使用的结构化表示。 模型应能够在开发环境和运行时环境(如编程语言、框架、平台、网络等)的许多边界上提供统一的领域视图。

  • 延迟评估和透明性: 模型中表示的状态应以透明的方式在位置上延迟评估。 当一个模型化一个领域时,领域对象代表最终解决到适当值的数据,而不一定是迫切计算。例如,当在模型中引用一个用户时,它可能是一个通过网络调用或数据库查询返回的对象。模型应能够隐藏这样的细节。透明性还意味着模型构建者不会因为底层系统或环境的不同查询语义、实现细节和访问协议等特殊问题而负担。

  • 分布式和独立发展的模型: 为特定应用程序构建一个统一模型不一定意味着一个单一的全局模型。 全局模型难以构建和维护。我们的目标是支持更小、分布式的模型,这些模型可以独立发展。应用程序(或解决方案)上下文将能够导入相关的模型,并为该应用程序创建一个统一的领域视图。

组织

金属库组织成以下一组包或库(crates)。

  • metals:这个库(当前crate)将整体功能集中在一起。
  • metals-poly:Poly库提供了元编程基础的结构和接口类型抽象。

金属书籍

metals 书籍 包含了对建模的介绍,使用 metals 进行建模的指南,以及对技术和数学背景的深入探讨。

请注意,这仍处于开发中。

依赖项

~420KB