代码之家  ›  专栏  ›  技术社区  ›  A9S6

自动应用程序生成器

  •  3
  • A9S6  · 技术社区  · 16 年前

    6 回复  |  直到 16 年前
        1
  •  7
  •   Eddie    16 年前

    假设您生成的二进制文件大小为1KB(相当小)。1KB是8192位。这意味着总共有2个 20 8172 秒生成所有可能的1KB二进制文件,这(根据wolfram alpha)大约是10 2442 乘以宇宙的年龄。这会让您了解,在对所有1KB程序进行彻底搜索时,遇到有用程序的可能性有多大(到底有多少有用的1KB程序?)

        2
  •  4
  •   liori    16 年前

    我将扩展Firestand关于基因编程的答案。

    已经有像你这样的想法了;然而,它们几乎一直局限于某些人工环境。

    CoreWars 环境这些程序并不长(几十到几百条汇编指令),而且法律指令集也不是很大,因此可能的程序空间比x86的成熟GUI应用程序小得多。一开始,机器人们几乎不互相打架;但是每一代人都有越来越好的战士。

    你可以在一本书中读到更多关于这个概念的内容 research paper (PDF)

    将这一思想应用于x86并不容易,这里的指令集很大,它们之间的交互有时非常复杂。然而,从理论上讲,您可以使用简化的指令集构建虚拟机,并为其开发程序。我在什么地方读到过,但我记不起在哪里了。

    您可以尝试使用“智能”系统为您的程序找到正确性证明。。。但由于您不局限于某些程序子集(您可以生成任何可以在处理器上运行的程序),因此您无法对所有程序进行推理,因为 Halting problem . 简单地说,如果不检查所有可能的输入,就无法检测某些程序是否正常工作。

        4
  •  2
  •   jk.    16 年前

    当然,您可以生成数百万个随机可执行文件,但这是容易的一点,困难的一点是确定哪些文件做了有用的事情,这需要测试,而不是自动化。

        5
  •  1
  •   Piskvor left the building Rohit Kumar    16 年前

    简短答复: 不 . 虽然这在理论上是可能的,但它比你在世界上的每一次彩票中奖的可能性要小得多,每天,直到你的余生。

    应用程序只是一系列 二进制值。

    Infinite monkey theorem ,特别是截面概率。

        6
  •  1
  •   Mike Dunlavey    16 年前

    除非你只有一只猴子,莎士比亚本人。