【问题标题】:Expert system for writing programs?编写程序的专家系统?
【发布时间】:2011-01-15 23:44:03
【问题描述】:

我正在集思广益,开发一个高级软件来操作矩阵代数方程,准确地说是张量操作,使用维度大小、系统可用内存等多个标准生成优化的 C++ 代码。

在精神上类似于张量收缩引擎 TCE,但专门针对生成优化而不是通用代码。 所需的最终结果是在我的领域中生成并行程序专家的软件。

  • 这种开发是否属于专家系统的范畴?
  • 考虑到限制,还有哪些其他项目在生成代码的同一领域工作?

【问题讨论】:

    标签: parallel-processing expert-system


    【解决方案1】:

    您所描述的更像是一种特定领域的语言。

    http://en.wikipedia.org/wiki/Domain-specific_language

    【讨论】:

      【解决方案2】:

      它不会被称为专家系统,至少不是这个概念的传统意义上的。

      专家系统是基于规则的推理引擎,因此相关专业知识清楚地封装在规则中。您建议的系统虽然可能将有关问题域性质的见解封装在某种线性代数模型中,但它更像是一个黑匣子,而不是专家系统。专家系统的一个特点是它们可以对其推理产生“解释”,而这样的特点是可能的,部分原因是知识表示虽然形式化了,但仍然接近于自然语言中的简单陈述;矩阵和对它们的操作,虽然可能是根据对现实的类似观察得出的,但透明度要低得多......

      从问题的描述中不清楚您提出的系统是否会优化现有代码(可能在有限的域中),或者它是否会产生优化的代码,在这种情况下驱动海湾一些外部目标/功能......

      【讨论】:

        【解决方案3】:

        井生产系统(规则系统)是四种通用计算方法之一(图灵机、Church 递归函数、后期生产系统和马尔可夫算法 [还有更多已添加到该列表中]),它们或多或少具有这些各自的实现:命令式编程、函数式编程、基于规则的编程——据我所知马尔可夫算法没有独立的实现。这些都是图灵等价的。

        所以基于规则的编程可以用来编写任何东西。此外,早期的数学/符号操作程序通常确实使用基于规则的编程,直到问题被充分理解(因此该方法改为命令式或约束编程 - 参见 MACSYMA - 嗯 MACSYMA 是用 Lisp 编写的,所以也许我有一个不同的程序或者他们最初为此在 Lisp 中实现了一个规则系统。

        您可以轻松编写一个规则系统来执行矩阵操作。您可以根据逻辑支持保留跟踪,以记录触发的对解决方案有贡献的实际规则(触发的某些规则可能不会直接对解决方案有贡献)。然后,对于每条规则,您都有一组 C++ 指令的映射(这些指令不必是“完整的”——它们的行为更像是半可执行的要求),这些指令作为中间语言输出。然后由解析器读取,以将其链接到所需的输入数据和所需的任何类型的修复。您可能会发现生成函数式代码更容易 - 一方面,在修复后您可以更轻松地优化函数式源代码中的输出代码。

        话虽如此,其他贡献者已经概述了一种特定于领域的语言方法,这也是 TED 人员所做的(我的建议是也只是使用规则)。

        【讨论】:

          猜你喜欢
          • 2018-03-05
          • 1970-01-01
          • 2010-09-15
          • 1970-01-01
          • 2011-12-22
          • 1970-01-01
          • 2010-09-27
          • 2013-05-05
          • 2017-07-08
          相关资源
          最近更新 更多