2022 年 06 月 13 日 星期一
|
目录 |
如果一个计算机语言具有图灵完备性(Turing Completeness),那么这个语言就是图灵完备语言(Turing-complete language)。
艾伦·麦席森·图灵(Alan Mathison Turing,1912.6.23 - 1954.6.7),英国数学家、逻辑学家、密码学家和英国首位计算机科学家,被誉为计算机科学和人工智能之父。
他对计算机科学的发展有着很高的影响力,他用图灵机提供了算法和计算概念的形式化,图灵机可以被视为通用计算机的模型。他的图灵测试对人工智能的发展,作出了重要的、典型的、具挑战性的和持久的贡献。
在 1928 年第八届国际数学家大会上,德国数学家希尔伯特(David Hilbert,1862 - 1943)提出了关于数学的三个精辟问题:
希尔伯特的第三个问题又被称为判定性问题(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):
在作为特定计算模型的图灵机上产生的可计算函数,就被称为图灵可计算函数。
如果一个计算系统可以计算每一个图灵可计算函数,那么这个系统就是图灵完备的;或者说,这个系统可以模拟通用图灵机。
图灵完备性也可以用来描述计算机语言的计算能力。
具有图灵完备性的计算机语言,就被称为图灵完备语言。绝大多数的编程语言,都是图灵完备语言。这包括:
并非所有的计算机语言都是图灵完备的,例如标记语言,或者更恰当地称为“容器语言”或“数据描述语言”,就不是图灵完备的。
非图灵完备语言(Non-Turing-complete language),包括 HTML、JSON、XML、YAML 等。