图灵机与编程语言
年前看了一本科普書籍–《人工智能簡史》,作者尼克,早年任職哈佛和惠普,后投資創業。
這本書描述了兩大人工智能的發展方向,一派主張擬生物大腦(譬如人工神經網絡),另一派則主張用邏輯和符號系統(譬如自動定理證明)。真正偉大的飛躍以1937年圖靈關于可計算數的開創性論文開始,奠定了計算機發展的基礎。
圖靈機是這樣一種裝置:有一條無限長的紙帶,紙帶上有無窮多個格子;一個可以移動的讀寫頭,每次可像制定格子寫入0或1(有限狀態機沒有寫入操作);一個有限狀態機,可以根據自身的狀態和當前紙帶格子上是0還是1,指示讀寫頭向左或向右移動一個格子,以及向當前的格子寫入內容。
幾種計算裝置(包括哥德爾的遞歸函數、lambda演算、post系統)都被證明是和圖靈機等價的。這個圖靈機本身是可以被編碼的,編碼后作為另一臺圖靈機的輸入,那么被編碼的圖靈機其實就是我們現在所謂的軟件了,而算法就是指在圖靈機上運行指令的過程。這一臺能解釋圖靈機的圖靈機稱為通用圖靈機,現代計算機都是通用圖靈機。
回顧現在計算機,CPU都有自己的寄存器保存當前執行的狀態,通過對當前指令的翻譯來知道下一步的讀寫操作以及要跳轉到哪個位置,然后進入一個新的狀態(寄存器集合)。這就是如今廣為傳播的馮諾依曼體系結構,可以證明這樣一個過程和圖靈的簡單機器是等價的。
后來科學家和工程師們為了開發的方便,發明了編程語言,以前C語言課老師會跟我們講一大堆關于語言的語法,怎么用,然后去做幾個實驗。但是很少會講程序語言是怎么來的,為什么要這么設計。其實編程語言配合編譯器完成的工作就是對圖靈機的模擬,我們是在通過編程語言制造圖靈機。這個圖靈機對數據按照特定方式進行處理,即所謂的算法。如果編程語言定義的操作和圖靈機等價,那么該語言就是圖靈完備的。包括C/C++/Java等常見語言都是圖靈完備語言。
這是計算機發展的理論基礎,后來又去看了《論可計算數:圖靈與現代計算的誕生》,該書把計算機發展的過程詳細闡述了一遍,受益頗豐。
總結
- 上一篇: 黑洞猝灭剂BHQ-2 acid,1214
- 下一篇: Adroid游戏开发实例讲解(五)-哄娃