| In mathematics and computability theory, self-reference (also known as Impredicativity) is the key concept in proving limitations of many systems. Gödel's theorem uses it to show that no formal consistent system of mathematics can ever contain all possible mathematical truths, because it cannot prove some truths about its own structure. The halting problem equivalent, in computation theory, shows that there is always some task that a computer cannot perform, namely reasoning about itself. These proofs relate to a long tradition of mathematical paradoxes such as Russell's paradox and Berry's paradox, and ultimately to classical philosophical paradoxes. | | In mathematics and computability theory, self-reference (also known as Impredicativity) is the key concept in proving limitations of many systems. Gödel's theorem uses it to show that no formal consistent system of mathematics can ever contain all possible mathematical truths, because it cannot prove some truths about its own structure. The halting problem equivalent, in computation theory, shows that there is always some task that a computer cannot perform, namely reasoning about itself. These proofs relate to a long tradition of mathematical paradoxes such as Russell's paradox and Berry's paradox, and ultimately to classical philosophical paradoxes. |
− | 在数学和可计算性理论中,<font color='ff8800'>自指</font>(也被称为不确定性)是证明许多系统局限性的关键概念。<font color='ff8800'>哥德尔定理Gödel's theorem</font>用它来表明,没有一个形式上一致的数学系统可以包含所有可能的数学真理,因为它不能证明某些关于它自身结构的真理。计算理论中停机问题的等价问题表明,总有一些计算机不能完成的任务,即关于自身的推理。这些证明关系到数学悖论的悠久传统,如<font color='ff8800'>罗素悖论</font>和<font color='ff8800'>贝瑞悖论</font>,并最终关系到经典哲学悖论。 | + | 在数学和可计算性理论中,<font color='ff8800'>自指</font>(也被称为<font color='ff8800'>不确定性</font>)是证明许多系统局限性的关键概念。<font color='ff8800'>哥德尔定理Gödel's theorem</font>用它来表明,没有一个形式上一致的数学系统可以包含所有可能的数学真理,因为它不能证明某些关于它自身结构的真理。计算理论中停机问题的等价问题表明,总有一些计算机不能完成的任务,即关于自身的推理。这些证明关系到数学悖论的悠久传统,如<font color='ff8800'>罗素悖论</font>和<font color='ff8800'>贝瑞悖论</font>,并最终关系到经典哲学悖论。 |
| In computer programming, self-reference occurs in reflection, where a program can read or modify its own instructions like any other data. Numerous programming languages support reflection to some extent with varying degrees of expressiveness. Additionally, self-reference is seen in recursion (related to the mathematical recurrence relation) in functional programming, where a code structure refers back to itself during computation. 'Taming' self-reference from potentially paradoxical concepts into well-behaved recursions has been one of the great successes of computer science, and is now used routinely in, for example, writing compilers using the 'meta-language' ML. Using a compiler to compile itself is known as bootstrapping. Self-modifying code is possible to write (programs which operate on themselves), both with assembler and with functional languages such as Lisp, but is generally discouraged in real-world programming. Computing hardware makes fundamental use of self-reference in flip-flops, the basic units of digital memory, which convert potentially paradoxical logical self-relations into memory by expanding their terms over time. Thinking in terms of self-reference is a pervasive part of programmer culture, with many programs and acronyms named self-referentially as a form of humor, such as GNU ('Gnu's not Unix') and PINE ('Pine is not Elm'). The GNU Hurd is named for a pair of mutually self-referential acronyms. | | In computer programming, self-reference occurs in reflection, where a program can read or modify its own instructions like any other data. Numerous programming languages support reflection to some extent with varying degrees of expressiveness. Additionally, self-reference is seen in recursion (related to the mathematical recurrence relation) in functional programming, where a code structure refers back to itself during computation. 'Taming' self-reference from potentially paradoxical concepts into well-behaved recursions has been one of the great successes of computer science, and is now used routinely in, for example, writing compilers using the 'meta-language' ML. Using a compiler to compile itself is known as bootstrapping. Self-modifying code is possible to write (programs which operate on themselves), both with assembler and with functional languages such as Lisp, but is generally discouraged in real-world programming. Computing hardware makes fundamental use of self-reference in flip-flops, the basic units of digital memory, which convert potentially paradoxical logical self-relations into memory by expanding their terms over time. Thinking in terms of self-reference is a pervasive part of programmer culture, with many programs and acronyms named self-referentially as a form of humor, such as GNU ('Gnu's not Unix') and PINE ('Pine is not Elm'). The GNU Hurd is named for a pair of mutually self-referential acronyms. |
− | 在计算机程序设计中,自指发生在反馈中,程序可以像读取或修改其他数据一样读取或修改自己的指令。许多编程语言在某种程度上支持反射,具有不同程度的表达能力。此外,在函数式编程中的递归(与数学递回关系式相关)中可以看到自引用,其中代码结构在计算过程中反向引用自身。“驯服”自我参照从潜在的矛盾概念到良好的行为递归一直是计算机科学的伟大成功之一,现在经常被用于,例如,编译器使用“元语言”机器学习。使用编译器编译自身称为引导。无论是使用汇编语言还是使用诸如 Lisp 之类的函数式语言,编写程序自修改程序都是可能的,但在实际编程中通常不提倡这样做。计算硬件在触发器中基本利用了自参照,这是数字存储器的基本单位,它通过随时间推移扩展其术语,将潜在的矛盾逻辑自我关系转化为存储器。自我引用思维是程序员文化中一个普遍存在的部分,许多程序和首字母缩略词都是以自我引用的方式命名的,这是一种幽默的形式,比如 GNU (“ GNU 不是 Unix”)和 PINE (“ PINE 不是 Elm”)。GNU Hurd 是以一对相互自我参照的缩写命名的。
| + | 在计算机程序设计中,<font color='ff8800'>自指</font>发生在反馈中,程序可以像读取或修改其他数据一样读取或修改自己的指令。许多编程语言在某种程度上支持反射,具有不同程度的表达能力。此外,在函数式编程中的递归(与数学递归关系式相关)中可以看到自引用,其中代码结构在计算过程中反向引用自身。把自指从潜在的矛盾概念“驯服”到良好的行为递归一直是计算机科学的伟大成功之一,现在经常被用于,例如,使用“元语言”机器学习编写编译器。使用编译器编译其自身称为<font color='ff8800'>自举</font>。无论是使用汇编语言还是使用诸如 Lisp 之类的函数式语言,编写程序自修改程序都是可能的,但在实际编程中通常不提倡这样做。计算硬件在触发器中建立了自指的基本应用,触发器是数字存储器的基本单位,它通过随时间推移扩展术语,将潜在的逻辑自相关矛盾转化为存储。<font color='ff8800'>自指</font>思维是程序员文化中一个普遍存在的部分,许多程序和首字母缩略词都是以自指的方式命名,这是一种幽默的形式,比如 GNU (“ GNU 不是 Unix”)和 PINE (“ PINE 不是 Elm”)。GNU Hurd 是以一对相互自我参照的缩写命名的。 |