在上世纪初,当大卫-希尔伯特(David Hilbert)正在研究比欧几里得更严格的几何学形式化时,乔治-康托尔(Georg Cantor)已经研究出一种关于不同类型的无限性的理论,即集合理论。这个理论很快就揭示了一系列令人困惑的悖论,导致了数学界 对当时数学基础原则的稳定性的危机 。
这些悖论的核心是罗素悖论(或者更笼统地说,正如我们后面要讲的,埃皮门尼德悖论)。让我们看看它是什么。
在那些比较简单的时代,如果你能用英语描述一个集合,你就被允许定义它。而且,由于数学家对自我参照的偏爱,集合可以包含其他集合。
于是,罗素想出了这个办法。
(R)是一个所有不包含自己的集合的集合。
问题是"(R)是否包含自己?"如果它不包含,那么根据定义的后半部分,它应该包含。但如果它包含,那么它就不再符合定义了。
同样可以用符号表示为。
让(R = { x `mid x `not `in x }),那么(R `in R `iff R `not `in R )。
提示头脑爆炸。
"格雷林悖论 "是一个惊人的变体,它用形容词代替了集合。如果形容词被分为两类,自体(自我描述)和异体(非自我描述),那么,"异体 "是异体的吗?试试吧!
埃皮门尼德悖论
或者说,所谓的说谎者悖论是另一个这样的悖论,它把当时的 "可计算性 "的概念撕碎了--事情要么是真的要么是假的。
埃皮门尼德(Epimenides)是一个克里特人,他发表了一个不朽的声明。
"所有克里特人都是骗子"。
如果所有克里特人都是骗子,而埃皮门尼德是克里特人,那么他说 "所有克里特人都是骗子 "就是在撒谎。但是,等等,如果他当时在撒谎,我们怎么能 "证明 "他不是在撒谎呢?艾因?
这就是为什么它是一个悖论:一个声明如此粗暴地违反了假定的声明的真假二分法,因为如果你暂且认为它是真的,它就会反作用于你,让你认为它是假的。而如果你假设语句是假的,也会发生类似的反作用。来吧,试试吧!
如果你仔细观察,所有这些悖论中都有一个共同的罪魁祸首,即 "自我参照"。让我们更仔细地看一下它。
奇怪的循环性
如果自我参照,或者道格拉斯-霍夫斯塔特(Douglas Hofstadter)--他在这个问题上的多产工作激发了这篇博文--称之为 "奇怪的循环 "是所有这些悖论的来源,那就完全有理由直接驱逐自我参照,或者任何允许它发生的东西。罗素和怀特海是当时两位反叛的数学家,他们赞同这一观点,并着手进行了巨大的工作,即*"数学原理",*正如我们稍后将看到的,它被哥德尔的发现彻底拆穿了。
使得禁止自我参照变得困难的主要原因是,很难确定自我参照到底发生在哪里。它可能会被分散在几个步骤中,就像在埃皮门尼德的这个 "扩展 "版本中一样。
下一句话是个谎言。
前面的陈述是真的。
罗素和怀特海,在*P.M.*然后,想出了一个多层次的集合理论来处理这个问题。其基本思想是,一个最低 "类型 "的集合只能包含作为成员的 "对象"(而不是集合)。然后,下一个类型的集合只能包含对象,或者更低类型的集合。这就隐含地禁止了自我参照。
既然所有的集合都必须有一个类型,那么一个 "包含所有不属于自己的集合 "的集合就根本不是一个集合,因此你可以说罗素的悖论已经得到了解决。
同样,如果试图将扩展的埃皮门尼德法应用于这一理论,也一定会失败,第一句话要对第二句话进行引用,必须在层次上高于它--在这种情况下,第二句话不能回环到第一句。
在大卫-希尔伯特在学术界面前严格证明*《数学原理》中定义的系统既一致*(无矛盾)又完整(即在*《数学原理*》提供的方法中,每条真语句都可以被评估为真)的31年后,哥德尔发表了他著名的不完备性定理。通过将埃皮门尼德悖论直接引入公理的核心,他证明了不仅是罗素和怀特海开发的公理系统,而且所有的公理系统都是完整的,没有不一致的。
很明显,*P.M.*在学术领域失去了它的魅力。
在哥德尔的工作之前,P.M.也不是特别受欢迎。
为什么呢?
这不仅仅局限于这篇博文,而且我们人类,一般来说,有一种自我参照的饮食习惯--这种古怪的理论严重限制了我们抽象出细节的能力--我们不仅作为程序员,而且作为语言学家也喜欢这种东西--以至于前面那段话,"不是......这个博客......我们人类...... "会被加倍禁止,因为提及 "*这个博文 "的 "权利 "只限于在层次上高于博文的东西,"元博客-博文"。其次,属于"我们 "*类别的我(大概是一个人)也不能提到 "我们"。
既然,我们人类,如此喜欢自我参照,那么让我们来讨论一些可以用书面形式表达的方式。
使这种奇怪的循环的一种方式,也许是'最简单的',就是使用'这个'这个词。在这里:
- 这个句子是由八个词组成的。
- 这个句子指的是它自己,因此是无用的。
- 这篇博文是如此的好。
- 这句话向你传达了'这'的含义。
- 这句话是一个谎言。(Epimenides Paradox)
另一个在不使用 "这句话 "的情况下创造自我参照的有趣技巧是引用句子本身。
有人可能会想出。
这个句子'这个句子包含五个字'包含五个字。
但是,这样的尝试一定是失败的,因为在自身内部引用一个有限的句子将意味着该句子比自身小。然而,无限的句子可以通过这种方式进行自我引用。

还有第三种方法,你已经在标题中看到了--奎因方法。奎因 "一词是由道格拉斯-霍夫斯塔特在他的《哥德尔-艾舍尔,巴赫》一书中创造的(这在很大程度上启发了这篇博文)。当使用这个方法时,自我参照是通过描述一个与奎因句子本身同构的排版实体而 "产生 "的。这种描述分为两部分--一部分是一套关于如何 "建造 "该句子的*"指令",另一部分是"模板"*,包含关于所需建筑材料的信息。
Quine版本的Epimenides将是。
"在它的引文之前产生谬误",在它的引文之前产生谬误。
在继续 "Quining "之前,让我们花点时间认识到我们的认知能力是多么强大,以及当一个充满自我指涉的认知载荷被送达时,我们的头脑中会发生什么--为了破译它,我们不仅需要了解语言,还需要找出类似于 "这句话 "的短语在该语言中的所指。这种解析取决于我们处理语言的复杂而又完全被同化的能力。
指称自己的想法是相当令人心动的,我们一直在这样做--也许,为什么我们这样做感觉如此 "容易"。但是,我们并不是生来如此,而是成长如此。这可以通过告诉一个更年轻的人 "这个句子是错的 "来更好地实现。他们可能会感到困惑--什么句子是错的?在我们的语言中,自我参照之所以如此简单,并因此允许出现悖论,其原因就在于我们的语言。它允许我们的大脑完成作者试图通过我们获得的重任,而不需要冗长的语言。
回到奎因斯。
复制自身
现在,我们知道了 "奎因 "是如何表现为自我引用的,那么,看看计算机程序是如何使用同样的技术来 "复制 "自己的,就会很有趣。
为了使其更加有趣,我们将选择最适合这一目的的语言:Brainfuck。
>>>>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++++++[->++++++++<]>--....[-]<<[<]<<++++++++[->+++++>++++++++<<]>+++>-->[[-<<<+>.>>]<.[->+<]<[->+<]>>>]<<<<[<]>[.>]
运行上面的程序,输出的是它自己。我同意,这不是世界上最有描述性的程序,所以下面用Python写的,是我们可以去描述那些可怕的 "+"和">"链里发生了什么的最接近。
THREE_QUOTES = '"' * 3
def eniuq(template): print(
f'{template}({THREE_QUOTES}{template}{THREE_QUOTES})')
eniuq("""THREE_QUOTES = '"' * 3
def eniuq(template): print(
f'{template}({THREE_QUOTES}{template}{THREE_QUOTES})')
eniuq""")
第一行在飞行中生成""" ,它在Python中标记多行字符串。
接下来的两行定义了eniuq 函数,它将参数模板打印两次--一次是普通的,然后用三段引号包围。
最后4行巧妙地调用这个函数,使程序的输出是源代码本身。
由于我们是按照与quining相反的顺序打印的,所以这个函数的名字是'quine'反转->eniuq (名字又是从Hofstadter那里偷的)
还记得关于自我引用如何将处理器资本化的讨论吗?如果'quining'是语言的一个内置功能,提供我们在程序员行话中所说的'语法糖'呢?
让我们假设一个星号,* ,在脑筋急转弯的解释器中会在执行指令之前复制指令,那么下面的程序的输出会是什么?
*
又会是一个星号。你可以提出一个论点,说这是愚蠢的,应该算作'作弊'。但是,这和依赖处理器是一样的,比如用 "这个句子 "来指这个句子--你依赖你的大脑来为你做推理。
如果eniuq 是Python中的一个内置关键字呢?那么一个完美的自我推理就只需要一个电话了。
eniuq('eniuq')
如果quine 是英语中的一个动词呢?我们可以减少推理所需的大量明确的认知过程。那么埃皮门尼德悖论将是。
"quined时产生谬误",quined时产生谬误。
现在,我们正在谈论自我反驳,这里有一个最后的娱乐项目给你。
图珀的自述公式
这个公式是通过一个不等式定义的。
({1\over 2} < \left\lfloor \mathrm{mod}\left(\left\lfloor {y\over 17})\Right\rfloor 2^{-17 \lfloor x \rfloor - \mathrm{mod}(\lfloor y\rfloor, 17)},2\right)\right\rfloor)
如果你把上面那个荒谬的东西,在坐标为(0 \le x \le 106, k \le y \le k + 17)的纸面上移动,其中(k)是一个544位的整数(在这里和我一起坚持一下),把每个像素染成黑色为真,其他为白,你会得到。

这还没有结束。如果(k)现在被替换成另一个包含291个数字的整数,我们会得到你真正的。
