是否有程序能够迭代编写新程序?

大约一年以来,我一直在考虑编写一个能够编写程序的程序。这主要是一个有趣的练习,可能会让我学到一些新的概念。我的灵感来源于负熵以及秩序从混乱中涌现、新的混乱从秩序中产生的无限循环的能力。

更具体地说,程序将从编写一个短的随机字符串开始。如果字符串能够编译,程序会记录下来以便后续比较。如果字符串无法编译,程序会尝试重写直到它能够编译。随着更多字符串(迷你“无用”程序)被记录下来,它们可以被解析以寻找相似性,并用于生成语法。然后可以利用这个语法来编写更多比纯粹随机字符串更有可能编译的字符串。

这显然有点傻,但我想尝试以这种方式“培养”一个程序会很有趣。作为副产品,我可以得到一堆独特的程序,我可以将它们可视化并称之为艺术。

我可能会用Ruby来编写这个程序,因为它的语法简单且支持动态编译,然后我将使用ruby-processing在processing中进行可视化。

我想知道的是:

  • 这种编程类型有名称吗?
  • 在这个领域目前存在什么?
  • 主要贡献者是谁?
  • 额外奖励! – 除了编译(是/否)之外,我可以通过哪些方式程序化地为输出程序赋值?
    我可能希望扩展这个程序的功能,根据参数生成程序,但我希望程序通过运行编译的程序并为程序的输出赋予意义来定义这些参数。这个问题可能比一个奖励问题更复杂,但如果你能想到一种简单的方法在不到23行或一个超链接内完成,请在你的回答中加入它。

我知道这不完全是元编程,从我对AI和生成算法的有限了解来看,它们通常比我所想的更有目标性。最理想的情况是一个程序能够不断重写和改进自己,这样我就不必动手了^_^


回答:

查找“遗传编程”。

编辑以回应评论:

@[隐藏人名], @[隐藏人名]: 确实。原帖中描述的是通过强行尝试使某些具体语法编译来推断语法,然后从语法中反向生成新的具体语法的系统。如果你必须要有非常接近这个描述的东西…我最好的建议是研究从某种语法非常简单的语言中的具体语法构建隐马尔可夫模型。我会考虑使用一种最小的组合逻辑(类似于Unlambda语言的精神)。

另一方面,遗传编程是一种有发展实践和文献的技术,它不是“确定性”的,而是一个随机过程。它也是一个相当广泛的术语——可以说,原帖中的系统是GP的一个极限情况,具有0%的交叉和100%的变异。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注