圖靈完備語言 Turing-Complete Language

概述


若是一個計算機語言具備圖靈完備性(Turing Completeness),那麼這個語言就是圖靈完備語言(Turing-Complete Language)。程序員

 

背景


艾倫·麥席森·圖靈

艾倫·圖靈

艾倫·麥席森·圖靈(Alan Mathison Turing,1912.6.23 - 1954.6.7),[1] 英國數學家、邏輯學家、密碼學家和英國首位計算機科學家,被譽爲計算機科學和人工智能之父。[2]算法

他對計算機科學的發展有着很高的影響力,他用圖靈機提供了算法和計算概念的形式化,圖靈機能夠被視爲通用計算機的模型。[3] 他的圖靈測試對人工智能的發展,做出了重要的、典型的、具挑戰性的和持久的貢獻。[4]編程

圖靈機

在 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):ui

若是一個函數的值能夠經過某種純機械的過程找到,那麼這個函數就能夠有效地計算出來。
A function is effectively calculable if its values can be found by some purely mechanical process.
this

在做爲特定計算模型的圖靈機上產生的可計算函數,就被稱爲圖靈可計算函數人工智能

圖靈完備性

若是一個計算系統能夠計算每個圖靈可計算函數,那麼這個系統就是圖靈完備的;或者說,這個系統能夠模擬通用圖靈機。spa

圖靈完備性也能夠用來描述計算機語言的計算能力。

 

定義


具備圖靈完備性的計算機語言,就被稱爲圖靈完備語言。絕大多數的編程語言,都是圖靈完備語言。這包括:

  • 普遍使用的全部通用語言:
    • 過程式語言,如 FORTRAN、Pascal 等。
    • 面嚮對象語言,如 Java、Python 等。
    • 多範式語言,如 Ada、C++ 等。
  • 使用不太常見範式的大多數語言:
    • 函數式語言,如 Haskell、Mercury 等。
    • 邏輯式語言,如 Logtalk、Prolog 等。
    • 聲明式語言,如 SQL、XSLT 等。
    • 深奧的語言(Esoteric Programming Language),一種奇特的數學娛樂形式,程序員用極其困難但數學上圖靈等價的語言來實現基本的編程結構。

 

非圖靈完備語言


並不是全部的計算機語言都是圖靈完備的,例如標記語言,或者更恰當地稱爲「容器語言」或「數據描述語言」,就不是圖靈完備的。

非圖靈完備語言(Non-Turing-Complete Language),包括 HTML、JSON、XML、YAML 等。

 


1. 艾倫·圖靈——如謎的解謎者 - 科學松鼠會 ↩︎

2. 148 封圖靈文件重現 - 澎湃新聞 ↩︎

3. 計算的極限(零):邏輯與圖靈機 - 科學松鼠會 ↩︎

4. 「人工智能之父」圖靈登上 50 英鎊紙鈔 - 澎湃新聞 ↩︎

相關文章
相關標籤/搜索