语言是思维的工具,什么是图灵完备语言

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册

语言是思维的工具,什么是图灵完备语言

一、从PHP与Python的语言比较去了解什么是图灵完备

从非常严格的理论角度来说,答案是:没有。因为PHP和Python都是图灵完备(Turing complete)的语言,所以理论上你找不到一个Python能做到而PHP做不到的事情。

可图灵指在可计算性理论中,编程语言或任意其他的逻辑系统如具有等用于通用图灵机的计算能力。换言之,此系统可与通用图灵机互相模拟。这个词源于引入图灵机概念的数学家艾倫·图灵(Alan Turing)。

虽然图灵机会受到存储能力的物理限制,图灵完全性通常指具有无限存储能力的通用物理机器或编程语言。

简单来说,一切可计算的问题都能计算,这样的虚拟机或者编程语言就叫图灵完备的。

图灵等价02Turing equivalence02和图灵完备02Turing completeness

经常在讲编程语言的书或文章里面看到图灵等价(Turing equivalence)和图灵完备(Turing completeness),但却不知道这两个词的精确含义和区别。尤其是很多书或文章经常对这两个词进行混用,我就很疑惑这两个词是不是就是一个意思。我用Google搜索了一下,很遗憾的是中文结果基本没用,只有一篇百度空间里面转载的一个外国人写的文章,还是全英文的,简单看了下感觉写得不怎么清楚,就查了下英文维基百科。言归正传,下面先看看维基百科的两段话:

In02computability theory, a system of data-manipulation rules(such as an02instruction set, a02programming language, or a02cellular automaton) is said to beTuring complete02or02computationally universal02if and only if02it can be used to simulate any single-taped02Turing machine02and thus in principle anycomputer.

在可计算理论里,一个数据操作规则的系统(比如:指令集、编程语言、细胞自动机)被称作图灵完备或者通用计算的,当且仅当它可以被用来模拟单带图灵机。

In computability theory, there is a closely related concept known as Turing equivalence. Two computers P and Q are called Turing equivalent if P can simulate Q and Q can simulate P. Thus, a Turing-complete system is one that can simulate a Turing machine, but the term is most often used to mean Turing equivalent to a Turing machine.02

在可计算理论里,有一个很相关的概念叫图灵等价。当计算机 P和计算机 Q是图灵等价的,当P可以模拟Q而且Q也可以模拟P。因此,一个图灵完备的系统可以模拟图灵机,但是这个术语(即图灵等价)常常被用来指与图灵机等价。

然后我们再来看看在可计算理论中,这两个词的正式定义:

Turing completeness:A computational system that can compute every Turing-computable function02is called Turing complete(or Turing powerful). Alternatively, such a system is one that can simulate a02universal Turing machine.

Turing equivalence:A Turing-complete system is called Turing equivalent if every function it can compute is also Turing computable; i.e., it computes precisely the same class of functions as do02Turing machines. Alternatively, a Turing-equivalent system is one that can simulate, and be simulated by, a universal Turing machine.(All known Turing-complete systems are Turing equivalent, which adds support to the02Church–Turing thesis.)

图灵等价:一个图灵完备的系统被称为图灵等价的,如果任何它可以计算的函数也是图灵可计算的。也就是它可计算的函数和图灵机可计算的函数是完全相同的。换句话说,就是图灵等价的系统就是能模拟通用图灵机同时也能也被通用图灵机模拟的系统。(所有已知的图灵完备的系统都是图灵等价的,这增加了对丘奇-图灵论题的支持)

通过上面的分析,我们就可以清楚的知道这两个词的意思和关系了。图灵等价有两个意思,一个是指两个计算系统在可计算性上计算能力相同;另一个,也是常用的一个就是指一个系统的计算能力与通用图灵机计算能力相同(在可计算性的意义上)。而图灵完备是指能够模拟通用图灵机的计算系统。而所有已知的图灵完备的系统都是图灵等价的,这也增加了对丘奇-图灵论题的支持。因此,在现有的计算机系统(编程语言、指令集等)上,使用图灵等价和图灵完备是一个意思。

二、sql算是一种语言么 满足图灵完备性么

当然算是语言了,名字都叫结构化查询语言.

我不知道如何证明是不是图灵完备的,有读能写(对应图灵机里面的读写头),有存储系统(对应图灵机里面的纸带),有逻辑判断功能(对映图灵机里面读写头在纸带上的按指令移动功能).

感觉SQL语言把brainfuck语言的指令功能都能实现. brainfuck是图灵完备的,也许可以通过证明SQL语言对于brainfuck语言的等价来证明SQL语言的图灵完备性,或不等价来证明非图灵完备.

就差一个数学大神了

三、如何证明一门编程语言是图灵完备的

一切可计算的问题都能计算,这样的虚拟机或者编程语言就叫图灵完备的。一个能计算出每个图灵可计算函数(Turing-computable function)的计算系统被称为图灵完备的。一个语言是图灵完备的,意味着该语言的计算能力与一个通用图灵机(Universal Turing Machine)相当,这也是现代计算机语言所能拥有的最高能力。图灵完备是什么意思呢?在可计算理论中,当一组数据操作的规则(一组指令集,编程语言,或者元胞自动机)满足任意数据按照一定的顺序可以计算出结果,被称为图灵完备(turing complete)。一个有图灵完备指令集的设备被定义为通用计算机。如果是图灵完备的,它(计算机设备)有能力执行条件跳转(“if”和“goto”语句)以及改变内存数据。如果某个东西展现出了图灵完备,它就有能力表现出可以模拟原始计算机,而即使最简单的计算机也能模拟出最复杂的计算机。所有的通用编程语言和现代计算机的指令集都是图灵完备的(C++ template就是图灵完备的),都能解决内存有限的问题。图灵完备的机器都被定义有无限内存,但是机器指令集却通常定义为只工作在特定的,有限数量的RAM上。

四、什么是图灵完备语言

如果一个计算机语言具有图灵完备性(Turing Completeness),那么这个语言就是图灵完备语言(Turing-complete language)。

背景

艾伦·图灵

艾伦·麦席森·图灵(Alan Mathison Turing,1912.6.23- 1954.6.7),英国数学家、逻辑学家、密码学家和英国首位计算机科学家,被誉为计算机科学和人工智能之父。

他对计算机科学的发展有着很高的影响力,他用图灵机提供了算法和计算概念的形式化,图灵机可以被视为通用计算机的模型。他的图灵测试对人工智能的发展,作出了重要的、典型的、具挑战性的和持久的贡献。

图灵机

图灵机模型

在 1928年第八届国际数学家大会上,德国数学家希尔伯特(David Hilbert,1862- 1943)提出了关于数学的三个精辟问题:

First, was mathematics complete…(数学是完备的吗?)

Second, was mathematics consistent…(数学是一致的吗?)

And thirdly, was mathematics decidable?(数学是可判定的吗?)

希尔伯特的第三个问题又被称为判定性问题(Entscheidungsproblem)。为了证否这个命题,1936年,图灵发表了一篇论文,题为《论可计算数,及其在判定性问题上的应用》(On Computable Numbers, with an Application to the Entscheidungsproblem)。在这篇论文里,图灵提出了一种假设的计算装置,他称之为 A-Machine(Automatic Machine,自动机器),这就是图灵机(Turing Machine)。

可计算函数

艾伦·麦席森·图灵

1938年,在美国普林斯顿大学攻读博士学位的图灵,发表了一篇博士论文,题为《基于序数的逻辑系统》(Systems of Logic based on Ordinals)。在这篇论文里,图灵定义了可计算函数(Computable function):

A function is effectively calculable if its values can be found by some purely mechanical process.

如果一个函数的值可以通过某种纯机械的过程找到,那么这个函数就可以有效地计算出来。

在作为特定计算模型的图灵机上产生的可计算函数,就被称为图灵可计算函数。

图灵完备性

如果一个计算系统可以计算每一个图灵可计算函数,那么这个系统就是图灵完备的;或者说,这个系统可以模拟通用图灵机。

图灵完备性也可以用来描述计算机语言的计算能力。

定义

图灵完备语言

具有图灵完备性的计算机语言,就被称为图灵完备语言。绝大多数的编程语言,都是图灵完备语言。这包括:

广泛使用的所有通用语言:

过程式语言,如 FORTRAN、Pascal等。

面向对象语言,如 Java、Python等。

多范式语言,如 Ada、C++等。

使用不太常见范式的大多数语言:

函数式语言,如 Haskell、Mercury等。

逻辑式语言,如 Logtalk、Prolog等。

声明式语言,如 SQL、XSLT等。

深奥的语言(Esoteric programming language),一种奇特的数学娱乐形式,程序员用极其困难但数学上图灵等价的语言来实现基本的编程结构。

非图灵完备语言

并非所有的计算机语言都是图灵完备的,例如标记语言,或者更恰当地称为“容器语言”或“数据描述语言”,就不是图灵完备的。

非图灵完备语言(Non-Turing-complete language),包括 HTML、JSON、XML、YAML等。

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://www.ssyg068.com/biquanzx/19960.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年03月01日
下一篇 2025年03月01日

相关推荐

  • 最新区块链项目,易语言支持区块链私钥生成协议吗

    一、区块链的区块是怎么产生的那作为区块链的数据元素,区块的构成又是怎样的呢?其实,每个区块的大小被规定不能超过1M,它的结构分为两部分,区块头和区块体。区块头共80字节,分为6个部分:version,prevBlockHash,merkleRoot,time difficultyTarget,nonce。version:大

    2025-04-22 04:55:01
    20 0
  • 网络用语xpl是什么意思,关于网络语言

    一、电脑网络名词网络名词:主要是指在新兴网络世界,聊天,工作,学习中(包括线上,线下),人们为了可以方便表达意思而对所说话语,所写内容进行的简写。当然有时也是年轻人的时髦用语,并不改变名词个数,只是换N个字,以达到想表达内容。还有就是通过网络游戏而衍生出的

    2025-04-03 14:55:01
    15 0
  • 区块链是什么技术,易语言支持区块链私钥生成协议吗

    一、区块链技术想要快速入门,一般涉及哪些编程语言任何一门计算机语言,都能在特定某个领域的应用中,实现区块链技术;具体使用哪一门语言,完全看我们相应领域行业企业项目的技术要求,以及更关键的:跟已有信息系统的有效对接联通。区块链具有自下而上生成记录,生成两方或

    2025-03-20 22:00:01
    29 0
  • 区块链技术介绍,区块链使用什么语言开发(区块链用什么技术开发)

    一、区块链使用什么语言开发(区块链用什么技术开发)区块链技术入门,涉及的编程语言有哪些Go语言为区块链主流语言根据BOSS研究院数据调查显示,目前在招的区块链岗位主流的语言是Go和C++语言,早期的区块链系统和应用程序主要是以C++实现,现在多数公司都会用Go语言来打造公链

    2025-03-12 04:55:02
    38 0
  • 以太坊十大应用,以太坊什么语言编写

    一、以太坊是什么丨以太坊开发入门指南以太坊是什么丨以太坊开发入门指南很多同学已经跃跃欲试投入到区块链开发队伍当中来,可是又感觉无从下手,本文将基于以太坊平台,以通俗的方式介绍以太坊开发中涉及的各晦涩的概念,轻松带大家入门。以太坊是什么以太坊(Ethereum)是一

    2025-03-08 07:55:01
    28 0
  • 区块链用什么语言开发最好,简单的解释一下什么是区块链

    一、软件开发需要学什么开始基础的学习,不管定位是前端工程师,还是后端工程师,他们都需要从业者掌握基础的互联网 IT知识。在具体的学习之前,需要先把这些基础的知识学习扎实,这些内容包括: HTML,软件开发步骤,互联网请求响应过程( HTTP协议),基本算法(数据结构),基

    2025-02-08 13:55:01
    51 0

发表回复

8206

评论列表(0条)

    暂无评论

binance币安交易所
已有2000万用户加入币安交易所

立即下载